一時テーブルを作成し、挿入し、選択してからドロップするストアドプロシージャを作成しました。SQL Server Management Studio内でストアドプロシージャを実行すると正常に機能し、期待どおりの結果が得られます。
CREATE PROCEDURE usp_TempTableTest
-- Add the parameters for the stored procedure here
@color VARCHAR(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
CREATE TABLE #tmptable (
color VARCHAR(10)
)
INSERT INTO #tmptable (color) VALUES (@color)
SELECT color FROM #tmptable
DROP TABLE #tmptable
END
GO
ただし、インポート/エクスポートツールで作成し、そのストアドプロシージャをデータソースとして使用すると、次のエラーが発生します。
オブジェクト名'#tmptable'が無効です。
なぜこれが起こるのか考えていますか?これをテーブル変数に変更すると、インポート/エクスポートでは正常に機能するように見えますが、一時テーブルで機能しない理由がわかりません。