2017-02-18 7 views
1

ストアドプロシージャを使用して実テーブルからテンポラリテーブルに値を挿入するにはどうすればよいですか?ストアドプロシージャを使用して実テーブルからテンポラリテーブルに値を挿入する

私はそれは私に正しい結果見せているSQL Serverでこのコードを実行しています:

SELECT 
    Toy_Image, Toy_Name, Anime_Image, Anime_Name, 
    Toy_Distributor_Image, Toy_Distributor 
INTO #Temp 
FROM Toy 

をしかし、私は、ストアドプロシージャを介してSQL Serverでこのコードを実行しようとしているとき、それは与えていません私のいずれかの結果と、それはNULL値を返している:

CREATE PROCEDURE AddToCart 
AS 
BEGIN 
    SELECT 
     Toy_Image, Toy_Name, Anime_Image, Anime_Name, 
     Toy_Distributor_Image, Toy_Distributor 
    INTO #Temp 
    FROM Toy 
END 

私はテーブルのおもちゃを作成し、テストレコードを挿入し、この問題

+0

[ストアドプロシージャ間でデータを共有する方法 - Erland Sommarskogを](http://www.sommarskog.se/share_data.html)この記事では、2つの関連質問に取り組む: 私は1つのストアドプロシージャから結果セットを使用することができますどのように SELECTステートメントでストアドプロシージャの結果セットを使用するにはどうすればよいですか? ストアドプロシージャのストアドプロシージャのパラメータにテーブルデータを渡すにはどうすればよいですか? – SqlZim

答えて

1

を解決するための助けが必要。次のストアドプロシージャは私のために働く。

CREATE PROCEDURE AddToCart 
AS 
BEGIN 
SELECT Toy_Image,Toy_Name,Anime_Image,Anime_Name,Toy_Distributor_Image,Toy_Distributor 
INTO #Temp 
FROM Toy 

SELECT Toy_Image,Toy_Name,Anime_Image,Anime_Name,Toy_Distributor_Image,Toy_Distributor 
FROM #Temp 
END 

手順を実行すると、テスト記録が#Tempに挿入されているのが見えます。

多分詳細を述べる必要があります。

+0

Bingol ...おかげで多くの仲間、私はあなたのコードを試して、今働いています – user2685850

+0

@ user2685850、私はあなたを助けてうれしいです。 –

0

ストアドプロシージャで作成するテンポラリテーブルには、ストアドプロシージャのスコープしかありません。つまり、ストアドプロシージャの実行が終了すると自動的に削除されます。

これは実際にはSQL Serverののフィーチャと見なされます。ストアドプロシージャ内でテンポラリテーブルを使用することができ、削除することを心配する必要はありません。

一時テーブルを永続化する場合は、グローバル一時テーブルまたは実テーブルを使用します。

1

ストアドプロシージャのスコープ内で作成されたテンポラリテーブルは暗黙的に削除され、ストアドプロシージャは終了します。

後で使用できるprocの一時表にデータをロードする場合は、事前に同じ接続でtemp表を作成し、proc内でSELECT...INTOの代わりにINSERTを使用します。

また、セッションIDで固定された永久テーブルを使用することもできます。これは、持続的な接続を開いたままにするのを避けるために、「ショッピングカート」アプリケーションの状態を維持するためのより良いアプローチです。しかし、放棄されたセッションを整理する必要があります。

関連する問題