1. ホーム
  2. tsql

[解決済み] sp_executesqlの結果を変数に取得する方法は?

2022-04-13 10:14:21

質問

動的SQLを実行し、その結果を変数に格納する必要があります。

を使うことができるのは知っています。 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

きれいではないけど、動く。