ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

T-SQLで動的SQLを実行し値を取得する方法

MS SQL Serverで動的SQLを作成し実行及び値を取得する。

declare @sSQL      nvarchar(max);
declare @sParam    nvarchar(max);
declare @sOutput1  char(8);
declare @sOutput2  char(10);

set @sSQL = N'select @sDate1 = convert(char(8),getdate(),112)'
set @sSQL = @sSQL + N',@sDate2 = convert(char(10),getdate(),111)'

set @sParam = N'@sDate1 char(8) OUTPUT';
set @sParam = @sParam + N',@sDate2 char(10) OUTPUT';

execute sp_executesql @sSQL, @sParam
                    , @sDate1 = @sOutput1 OUTPUT
                    , @sDate2 = @sOutput2 OUTPUT

select @sOutput1, @sOutput2

→実行結果
20110210 2011/02/10
  1. クエリの結果が複数行の場合は上記の方法では最終行の値が取得される。