商店如何将变量输出执行到另一个变量SQL中

时间:2011-11-09 07:13:50

标签: sql sql-server

以下是我的摘要:

create procedure sp (@pre nvarchar(50), @count nvarchar(50))
as
declare @preval nvarchar(500); 
declare @countval nvarchar(500);

select @preval = 'select '+ @prefix  + ' from tblc'
select @countval= 'select '+ @counter  + ' from tblc'

exec sp_executesql @preval,@countval

pre和count是一个2输入参数,它给出了“columnsname1”和“columnname2”,它们是动态的。我想构建一个查询/ sp,它给出了特定列中的值,我想将它们存储在我的sp中的2个不同或单个变量中。直到现在我得到列名作为我不想要的结果,我想要在特定列中的值。并且还希望第三个变量中的值!如有任何疑问请告诉我。

1 个答案:

答案 0 :(得分:2)

嗯......假设您的示例是伪代码,并且不希望逐字工作,您可以从阅读sp_executesql如何工作中受益 - 注意第二个参数后续执行命令

完成后,您可以尝试以下方法:

create procedure sp (@prefix nvarchar(50), @counter nvarchar(50)) 
as 
declare @preval nvarchar(500);  
declare @countval nvarchar(500);  
select @preval = 'select '+ @prefix  + ' from tblc' 
select @countval= 'select '+ @counter  + ' from tblc' 

declare @cmd as nvarchar(500);
set @cmd = @preval+';'+@countval 
exec sp_executesql @cmd

......祈祷有人不这样做......

sp '1; delete',''

就个人而言,我会质疑为什么你觉得有必要走这条路。

但是,您可能会发现,如果您阅读了sp_executesql,并查看以下示例,您将找到获得所需内容的方法。我猜测'tblc'表只有一行?

declare @sql as nvarchar(4000)
declare @p1 as integer

set @sql = 'select @p1=count(*) from tblc'
exec sp_executesql @sql, N'@p1 int output', @p1 output

select @p1
相关问题