Ich schreibe eine gespeicherte Prozedur in SQL Server 2005, an einem bestimmten Punkt muss ich eine andere gespeicherte Prozedur ausführen. Dieser Aufruf ist dynamisch, und so habe ich Sp_executesql Befehl wie gewohnt verwendet:sp_executesql und Tabellenausgabe
DECLARE @DBName varchar(255)
DECLARE @q varchar(max)
DECLARE @tempTable table(myParam1 int, -- other params)
SET @DBName = 'my_db_name'
SET q = 'insert into @tempTable exec ['[email protected]+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
Aber ich bekomme diese Fehlermeldung:
Must declare the scalar variable "@tempTable".
Wie Sie diese Variable sehen kann, wird erklärt. Ich habe die documentation gelesen und scheint, dass nur Parameter erlaubt sind Text, Ntext und Bild. Wie kann ich haben, was ich brauche?
PS: Ich habe Umfang viele Tipps für das Jahr 2008 und weitere Version, jede für 2005
seit 2005 eine Weile, aber der Umfang des @ TempTable ist das aktuelle Verfahren, nicht die ExecuteSQL Verfahren begrenzt ... – Sparky
es nichts mit sp_executesql zu tun hat. Es hat mit dem Umfang einer Tabellenvariablen zu tun. Das nächste, was ich mir vorstellen würde wäre, eine temporäre Tabelle zu verwenden, aber ich bin mir ziemlich sicher, dass es auch scheitern wird, weil sp_executesql auf einem anderen Thread läuft. –