実行時にクエリを構築し、sp_executesql で実行することによってのみ達成できるタスクがあります。結果は、関数の結果として返す必要があるブール値 (0/1 整数) でなければなりません。
SPの出力をキャプチャする唯一の方法は、「INSERT INTO [table] EXECUTE [sp]」クエリですが、関数はこれを禁止しています。
これを克服する方法はありますか?
実行時にクエリを構築し、sp_executesql で実行することによってのみ達成できるタスクがあります。結果は、関数の結果として返す必要があるブール値 (0/1 整数) でなければなりません。
SPの出力をキャプチャする唯一の方法は、「INSERT INTO [table] EXECUTE [sp]」クエリですが、関数はこれを禁止しています。
これを克服する方法はありますか?
sp_executesqlを使用すると、パラメーターを渡すことができますが、パラメーターを出力用として宣言することもできます。あまり動的ではないが、出力パラメータがどのように機能するかを示すこの単純な例を見てくださいsp_executesql
。
declare @sql nvarchar(max)
declare @user sysname
select @sql = 'SELECT @user = SYSTEM_USER'
exec sp_executesql @sql, N'@user sysname OUTPUT', @user OUTPUT
select @user