ストアド プロシージャの結果セットを一時テーブルに格納する必要があります (SQL Server 2000 を使用)。私が読んだことから、これ(不十分に構築された例)は機能するはずです:
create table #tempTable (TempId int primary key, Column1 varchar(100),
Column2 varchar(100), DateCreated datetime)
insert into #tempTable (TempId, Column1, Column2, DateCreated)
exec sproc_Select_Stuff_By_DateCreated @Date1 = '1/1/2009', @Date2 = '1/2/2009'
しかし、「挿入エラー: 列名または指定された値の数がテーブル定義と一致しません。」
手順を調べると(編集できません)、次のことがわかります。
CREATE PROCEDURE sproc_Select_Stuff_By_DateCreated
@Date1 datetime,
@Date2 datetime
AS
BEGIN
SELECT TempId, Column1, Column2, DateCreated
FROM ReallyHugeMessOfJoinsAndCalculatedColumns
WHERE DateCreated between @Date1 and @Date2
SELECT @Date1 as Date1, @Date2 as Date2
END
したがって、実際には、渡されたパラメーターを 2 番目の結果セットとしてエコー バックしています。(理由はわかりません。プロシージャを呼び出すものは、渡されたデータを知っていると思います。)
私のテストでは、SQL が結果セットを結合しようとして失敗したように、2 番目の結果セットが挿入エラーの原因であると考えるようになりました。
一時テーブルに保存された最初の結果セットだけが必要です。どうやってやるの?
編集
CLR ストアド プロシージャを指摘していただきありがとうございます。ただし、その機能は SQL 2005 で導入されました。2000 では機能しません。
他の唯一の答えは「できません」のように見えるので、私にとっては製図板に戻っていると思います.