以下是我的摘要:
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个不同或单个变量中。直到现在我得到列名作为我不想要的结果,我想要在特定列中的值。并且还希望第三个变量中的值!如有任何疑问请告诉我。
答案 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