34,576
社区成员
发帖
与我相关
我的任务
分享
--在查询分析器中执行存储过程,没有任何错误,可以得到结果:
exec pr_rsTest 'tb_test'
Set @SQL='select '+fields+' from '+@tblName
--->
Set @SQL='select '+@fields+' from '+@tblName
但是修改存储过程,取消exec方式是有效的:
Create PROCEDURE pr_rsTest
@tblName varchar(255), -- 表名
@fields varchar(1000) = '*' -- 需要返回的列
AS
Declare @SQL nvarchar(4000)
Set @SQL='select '+fields+' from '+@tblName
-- @SQL是根据传入参数动态组合的,存储过程事先不知道表名和字段表
-- exec (@SQL) --如果以EXEC方式执行,总是不能返回数据集
select * from tb_test --如果直接查询,用sqlDataSource设计器中的“测试查询”是能够正确返回数据集的
GO
这样可以返回数据集啊。怎么不能返回呢?
select * into #tbtest from tb_test where 1<>1 --先建个返回记录集一样结构的临时表
Create PROCEDURE pr_rsTest
@tblName varchar(255), -- 表名
@fields varchar(1000) = '*' -- 需要返回的列
AS
Declare @SQL nvarchar(4000)
Set @SQL='select '+fields+' from '+@tblName
-- @SQL是根据传入参数动态组合的,存储过程事先不知道表名和字段表
exec (@SQL) --如果以EXEC方式执行,总是不能返回数据集
GO
--执行存储过程:
exec pr_rsTest 'tb_test','f1,f2'