现在需要对一个结果集进行处理。这个结果集是对另一个函数的调用后,拼凑出来的SQL语句。
如果写成存储过程:exec(@sql)就可以得到运行结果集。但我需要类似于对表操作一样对结果集进行处理,也就是函数,可在函数中就不支持使用exec,而只能使用sql语句。请高手帮忙看看,谢谢了!

解决方案 »

  1.   

    函数中不能用exec,可以使用存储过程,返回数据集。可以直接访问存储过程的数据集,而不用临时表:select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名.dbo.存储过程名') select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名..存储过程名') select * from openrowset('sqloledb','localhost';'用户名';'密码','exec 数据库名..存储过程名')select * from openrowset('sqloledb','192.168.0.1';'用户名';'密码','exec 数据库名..存储过程名')
      

  2.   

    我的意思是说如果写成存储过程,那么如何通过select 语句从存储过程中获得到数据集。除了openrowset还有其他方法没?
      

  3.   

    除了openrowset只能是先把结果集放到表里,然后从表里提取。
      

  4.   

    使用存储过程返回的数据集:
    --第一种方法:直接用存储过程返回的数据集select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名.dbo.存储过程名') select * from openrowset('sqloledb','Trusted_Connection=yes','exec 数据库名..存储过程名') select * from openrowset('sqloledb','localhost';'用户名';'密码','exec 数据库名..存储过程名')select * from openrowset('sqloledb','192.168.0.1';'用户名';'密码','exec 数据库名..存储过程名')-第二种方法:先创建临时表,然后再追加create table #t(...)insert into #t exec 存储过程名select * from #t