Ich habe eine Prozedur erstellt
%Vor% Wenn ich die Prozedur testProcedure_One
ausführe, erhalte ich folgende Fehlermeldung:
%Vor%
Aber wenn ich ##temp means
verwende, funktioniert es:
testProcedure_two
funktioniert einwandfrei
Was könnte das Problem sein? Wie kann ich es lösen?
Vermutlich haben Sie folgenden Code, der SELECT von #temp, geben Sie den Fehler?
Es hängt vom Umfang ab. ## temp ist eine globale temporäre Tabelle, die in anderen Sitzungen verfügbar ist. #temp ist eine "lokale" temporäre Tabelle, auf die nur der aktuell ausgeführte Bereich zugreifen kann. sp_executesql wird in einem anderen Bereich ausgeführt und daher werden die Daten in #temp eingefügt, aber wenn Sie dann versuchen, auf diese Tabelle außerhalb des Aufrufs sp_executesql zuzugreifen, wird sie nicht gefunden.
z.B. Dieser Fehler als #Test wird erstellt und ist nur für den Kontext "sp_executesql" sichtbar:
%Vor%Das obige funktioniert mit ## Test, da es eine globale temporäre Tabelle erstellt.
Dies funktioniert, da SELECT Teil desselben Bereichs ist.
%Vor%Meine Fragen wären:
Erstellen Sie die temporäre Tabelle mit CREATE TABLE und verwenden Sie INSERT INTO , um die Werte anstelle von SELECT INTO einzufügen.
Das hat das Problem für mich behoben.
Tags und Links sql-server sql-server-2005 temp-tables