1
SQL Serverのテンポラリテーブルにロードするテーブルが2つあります。無効なオブジェクト名##グローバルテンポラリテーブルを作成するときの一時エラー
私はテーブルからデータを取得するストアドプロシージャを作成しています。次に、グローバル・テンポラリ・テーブルを作成し、ストアド・プロシージャの結果をそこに挿入します。私はこのエラー 「無効なオブジェクト名##のTemp」
を取得し、一時テーブルからデータを選択しようとしているが
それがグローバル一時表であれば、なぜ私はこのエラーを取得していますか?
DROP PROCEDURE usp_GetEmp
GO
CREATE PROCEDURE usp_GetEmp
AS
BEGIN
SELECT table1.id AS Id
, table2.data AS table2_value
FROM table1 INNER JOIN table2
ON table1.id = table2.table1_id
WHERE table2.data = 1
END
CREATE TABLE ##Temp
(Id Int
, Value varchar(50))
INSERT INTO ##Temp
EXEC usp_GetEmp
GO
SELECT *
FROM ##Temp
グローバル一時テーブルだ試しは何かが少しデザインと離れているというサインです。それらには並行性とスコープの問題があります。あなたはそこにGOを持っていますか?それ以外の場合、create tableなどはすべてプロシージャ内にあります。 –
うわーが問題だった。もともとグローバルな一時テーブルは持っていませんでしたが、エラーではないと仮定していましたので、グローバルな範囲に変更しました。もはやグローバルではなく、機能します。ありがとう! –
あなたのストアドプロシージャには、 'GO'ステートメントがあるために' Create Table'ステートメントと 'Insert Into'ステートメントが含まれています。以下の@Fabianoへの寄付。私は今まで彼の答えを見ていませんでした。 –