首先说明,我使用的是dbExpress。
我想调用sp_helpindex来查看一个表的索引信息。
由于这个是系统存储过程,保存在master数据库中,所以通过TSQLStoredProc并不能直接使用这个存储过程。那么如何在不新增存储过程的情况下调用它呢?

解决方案 »

  1.   

    用 query 
    exec master..sp_helpindex
      

  2.   

    楼上的,..是不是use的意思啊?
    我试了不正确,提示我指定的表在master中不存在。
      

  3.   

    hc0007(delphi初学者)的意思是用Tquery,在Tquery中执行SQL语句exec master..sp_helpindex来调用存储过程。
      

  4.   

    dbExpress 也有 query 控件的,我没有用过,不过应该和 ADO 的query 用法差不多的
    你在查询分析器里 运行exec master..sp_helpindex 就是调用 系统存储过程 sp_helpindex 
    如果想在程序里面 调用就这样with SQLQuery do
    begin
      close;
      SQL.clear;
      SQL.add('exec master..sp_helpindex ')   // 具体参数你自己加 
      open;
    end
      

  5.   

    非常感谢hc0007的热心回答,不过我想你没有作过实验~sp_helpindex是获取一个表的索引信息,它需要传入一个参数——表名。现在问题的关键是,如果使用master..sp_helpindex,似乎将当前数据库转到了
    master,而我需要传入的表名并不在master库中。因此发生错误!
      

  6.   

    我举一个实际的例子,这个例子我自己调试通过目前数据为 liandasys ,里面有一张表为 bm
    然后我想的程序连的是liandasys 
    我用 query 这个写with Query do
    begin
      close;
      SQL.clear;
      SQL.add('exec master..sp_helpindex '+''''+'dbo.bm'+'''');   // 具体参数你自己加
      open;
    end结果返回 liandasys 表 bm 的索引信息
      

  7.   

    我举一个实际的例子,这个例子我自己调试通过目前数据为 liandasys ,里面有一张表为 bm
    然后我写的程序连的是数据库为liandasys 
    我用 query 这样写with Query do
    begin
      close;
      SQL.clear;
      SQL.add('exec master..sp_helpindex '+''''+'dbo.bm'+''''); // 具体参数你自己加
      open;
    end结果返回 liandasys 表 bm 的索引信息
      

  8.   

    我想你的意思是:exec master..sp_helpindex 'dbo.表名'但是在查询分析器中都通不过 :(
    还是提示表在master库中不存在
      

  9.   

    在查询分析器中 要选你要查的数据库而不是选 master 库
    例如 我在 tempdb  注意 我当前连的数据库是 tempdb 然后运行
    exec master..sp_helpindex 'dbo.syscolumns'如果还不行 ,可能是我的表达能力有问题~ 呵呵  这个问题 我就此打住了~! ^_^
      

  10.   

    我选择的就是要查的数据库!你上面这句SQL没有问题是因为syscolumns在master库中也存在,
    如果传一个master库中不存在的表名就会有问题。虽然没有解决,但是我还是很感激你的热心回答。分虽然少,
    但表示了我的一份心意,请笑纳~
      

  11.   

    直接这样就行了exec sp_helpindex 'name''name'为指定当前数据库中的表的名称
      

  12.   

    另外,dbo.sp_helpindex '表名'能够在查询分析器中正确执行,但在TSQLQuery中调用会出错,真是郁闷~
      

  13.   

    dbo.sp_helpindex '表名'在TADOQuery中却不会出错...
      

  14.   

    这次我是测试通过的, 应为 master 库里面也有 dm 表 所以我的那条语句也测试成功了  -_-~! 
      

  15.   

    exec sp_helpindex 'name'在查询分析器中没有任何问题,但是用在程序中却是不行的~
      

  16.   

    唉~
    真郁闷啊~
    实在不兴只有自己写SQL而不调用这些系统存储过程了