Bei der Verwendung von sp_executesql mit temp-Tabellen ist die empfohlene Methode zur Verwendung von globalen temporären Tabellen
Wir haben die folgende Struktur mit dynamischen sql mit Variablen und temporäre Tabellen:
DECLARE @X AS INT = 1;
DECLARE @Y AS INT = 1;
DECLARE @Z AS INT = 1;
DECLARE @S AS NVARCHAR(500) =
N' SELECT @P+@Q+@R AS ANSWER INTO #X'
EXEC sp_executesql
@stmt = @S,
@params = N'@P AS INT,@Q AS INT,@R AS INT',
@P = @X,
@Q = @Y,
@R = @Z;
SELECT (ANSWER + 1) AS FINALANSWER
FROM #X
Die temporäre Tabelle #x erzeugt wird, in den Anwendungsbereich von sp_executesql so dann mit, dass Daten im nachfolgenden code ist nicht möglich.
Ist es ein standard-Ansatz, den ich nehmen muss um diese Arbeit zu machen oder sollte ich auf Globale temporäre Tabellen?
- sommarskog.se/share_data.html
- ok danke Mitch ich benutze diese Website eine Menge - zweite auf der MSDN-Website. Ich hätte nicht gedacht, dass es als "Austausch von Daten zwischen gespeicherten Prozeduren" aber ich denke, dass ist GENAU das, was es ist - nur eine der procs ist eine integrierte sql-server-proc. Da beide procs nicht selbst erstellt und da
sp_executesql
erstellt von MS bin ich Frage mich, ob es ein standard empfohlen Ansatz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben, betrachten Sie dies über ein OUTPUT-parameter retreieve der Wert
Verfahren
Execute Proc
Ergebnis
Bearbeiten
Da Sie erwähnt haben in Ihren Kommentaren, dass Sie wieder eine Tabelle aus der Sie Ihr proc-in diesem Fall würde ich sugguest zu tun einfach
SELECT
im inneren des proc und bekommen die Ergebnisse, die Sie proc in eine temporäre Tabelle außerhalb der Prozedur. so etwas wie dieses ...Ich würde nur das erstellen der temp Tabelle ersten. Innere Ausführung Bereiche sehen können temporäre Tabellen vom äußeren Bereiche: