select id from syscolumns where isoutparam = 1
(select [id] from objects where [name] = 'you procedure' and xtype = 'p')

解决方案 »

  1.   

    SELECT * 
    FROM OPENROWSET('SQLOLEDB',
       'DRIVER={SQL Server};SERVER=ServerName;UID=sa;PWD=',
       'exec DBName..ProcName') AS a
      

  2.   

    select * from syscolumns
    where isoutparam = 1
         and id in (select [id] from objects
                     where [name] = 'you procedure' and xtype = 'p')if @@rowcount <> 0
     begin
         print '有返回值'
     end
      

  3.   

    --判断是否有结果,如果有的话列出所有字段,待优化IF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'testtable' 
      AND   type = 'U')
        DROP TABLE testtable
    GO
    if exists(SELECT * 
    FROM OPENROWSET('SQLOLEDB',
       'DRIVER={SQL Server};SERVER=server;UID=sa;PWD=',
       'exec ft_xs..bbb') AS a)
    begin
    SELECT * into testtable
    FROM OPENROWSET('SQLOLEDB',
       'DRIVER={SQL Server};SERVER=server;UID=sa;PWD=',
       'exec ft_xs..bbb') AS aexec sp_columns 'testtable'
    end
      

  4.   

    to:wanyingsong(豌豆)如果存储过程有输入参数,是不是需要首先获取输入参数信息,再对输入参数进行模拟来获得数据集的查询结果?
      

  5.   

    wanyingsong(豌豆) 的,如果存储过程不是返回表集,会报错.
    对于有输入参数的存储过程,当然要输入参数进行模拟来获得数据集的查询结果.
    因为有的存储过程在输入不同参数时,有可能是结果集,也可能是返回值,所以必须输入参数确定
      

  6.   

    wanyingsong(豌豆) 的方法还存在一个问题,如果我的存储过程是这样的:create proc test
    as
    select 1  --虽然返回的是结果集,但没有指定列名,一样会出错.
      

  7.   

    我想这个问题在程序中去解决比较好一点. 在SQL中好像有点难做到.