我有一条需要执行的动态 SQL,然后我需要将结果存储到一个变量中。
我知道我可以使用sp_executesql,但找不到有关如何执行此操作的明确示例。
sp_executesql
如果你有 OUTPUT 参数,你可以做
DECLARE @retval int DECLARE @sSQL nvarchar(500); DECLARE @ParmDefinition nvarchar(500); DECLARE @tablename nvarchar(50) SELECT @tablename = N'products' SELECT @sSQL = N'SELECT @retvalOUT = MAX(ID) FROM ' + @tablename; SET @ParmDefinition = N'@retvalOUT int OUTPUT'; EXEC sp_executesql @sSQL, @ParmDefinition, @retvalOUT=@retval OUTPUT; SELECT @retval;
但是如果你不这样做,并且不能修改 SP:
-- Assuming that your SP return 1 value create table #temptable (ID int null) insert into #temptable exec mysp 'Value1', 'Value2' select * from #temptable
不漂亮,但有效。