他のストアド プロシージャの名前を表す文字列引数を受け取るストアド プロシージャ (SQL Server) を作成しています。この文字列には、保存されているすべてのパラメーターも含まれているため、実行するには、EXEC @vSpCommand
.
ここで問題が発生します。私の手順は多用途の SP を処理できる必要があるため、結果テーブルがどのようになるかわかりません。つまり、テーブルに含まれる列の数と、各列の型がわからないということです。
さらに、指定された SP ( @vSpCommand
) 内に、別の格納された別の動的呼び出しがある場合があります。したがって、使用しても機能しOPENROWSET
ません。私は次のことを試しました:
SET @vSpCommand = REPLACE(@vSpCommand,'''','''''')
SET @vCmd = 'IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[TA_SpTable'+@vExecId+']'') AND type in (N''U''))
DROP TABLE TA_SpTable'+@vExecId+' SELECT * INTO TA_SpTable'+ @vExecId+' FROM OPENROWSET(''SQLOLEDB'', ''Server=SERVERNAME,3180;Trusted_Connection=Yes'',
''EXEC '+@vSpCommand+ ''')'
EXEC (@vCmd)
成功せずに。
問題は、この SP の結果をテーブルに挿入する方法です。
それが不可能な場合を除き、SQL 内でのソリューションが優先されます。それ以外の場合は、.NET CLR の使用もオプションです。