2017-02-18 2 views
1

Wie füge ich Werte in temporäre Tabelle aus realer Tabelle mithilfe gespeicherter Prozedur ein?Einfügen von Werten in temporäre Tabelle aus realer Tabelle mithilfe gespeicherter Prozedur

Wenn ich Ausführen diesen Code in SQL Server es mir das richtige Ergebnis zeigt:

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

Aber wenn ich versuche, diesen Code in SQL Server über gespeicherte Prozedur auszuführen, wird es nicht geben mir jedes Ergebnis und es kehrt Nullwert:

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

ich brauche Hilfe dieses Problem

+0

[wie Daten zwischen Stored Procedures Teilen - Erland Sommarskog] (http://www.sommarskog.se/share_data.html) Dieser Artikel befasst sich zwei verwandte Fragen: Wie kann ich das Ergebnis von einer gespeicherten Prozedur verwenden in einem anderen, auch ausgedrückt als Wie kann ich die Ergebnismenge aus einer gespeicherten Prozedur in einer SELECT-Anweisung verwenden? Wie kann ich eine Tabelle Daten in einem Parameter von einer gespeicherten Prozedur zu einer anderen übergeben? – SqlZim

Antwort

1

ich habe den Tisch Spielzeug und eingefügt, um einen Testprotokoll zu lösen. Die folgende gespeicherte Prozedur funktioniert für mich.

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 

Ich konnte den Test-Datensatz in #Temp eingefügt sehen, wenn ich den Vorgang ausführen.

Vielleicht müssen Sie weitere Details angeben.

+0

Bingol ... Vielen Dank bro, Ich habe versucht, Ihren Code und jetzt funktioniert es – user2685850

+0

@ user2685850, ich bin froh, dass es Ihnen geholfen hat. –

0

Die temporäre Tabelle, die Sie in der gespeicherten Prozedur erstellen, hat einen Bereich nur der gespeicherten Prozedur. Das heißt, es wird automatisch gelöscht, wenn die gespeicherte Prozedur die Ausführung beendet hat.

Dies wird tatsächlich als Feature von SQL Server betrachtet. Sie können temporäre Tabellen in einer gespeicherten Prozedur verwenden und müssen sich keine Gedanken darüber machen, sie zu löschen.

Wenn die temporäre Tabelle beibehalten werden soll, verwenden Sie entweder eine globale temporäre Tabelle oder eine echte Tabelle.

1

Temporäre Tabellen, die im Rahmen einer gespeicherten Prozedur erstellt wurden, werden implizit gelöscht, und die gespeicherte Prozedur wird beendet.

Wenn Sie Daten in eine temporäre Tabelle in einem nachfolgenden Prozess laden möchten, erstellen Sie die temporäre Tabelle zuvor auf derselben Verbindung und verwenden Sie anstelle von SELECT...INTO im Prozess.

Alternativ können Sie eine permanente Tabelle verwenden, die von einer Sitzungs-ID eingegeben wird. Dies ist ein besserer Ansatz, um den Status für eine "Warenkorb" -Anwendung beizubehalten, um zu vermeiden, dass eine dauerhafte Verbindung offen bleibt. Sie müssen jedoch verlassene Sitzungen bereinigen.

Verwandte Themen