sp_executesql-und output-Tabelle
Schreibe ich eine gespeicherte Prozedur in SQL Server 2005, an einem bestimmten Punkt, den ich ausführen müssen, eine andere gespeicherte Prozedur. Dieser Aufruf ist dynamisch, und so habe ich verwendet sp_executesql-Befehl wie gewohnt:
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 ['+@DBName+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
Aber ich bekomme diese Fehlermeldung:
Erklären muß, die Skalare variable "@tempTable".
Wie Sie sehen können, dass die variable deklariert ist. Ich habe gelesen, die Dokumentation und es scheint, dass nur Parameter erlaubt sind text, ntext und image. Wie kann ich das, was ich brauche?
PS: ich habe viele Tipps für das Jahr 2008 und eine weitere version, alle für das Jahr 2005.
Schon eine Weile seit 2005, aber die @tempTable Anwendungsbereich ist beschränkt auf den aktuellen Vorgang, nicht die executeSQL-Verfahren...
es hat nichts zu tun mit sp_executesql. es hat zu tun mit der Absicht, eine table-variable. das nächste, was Sie denken, wäre die Verwendung einer temporären Tabelle, aber ich ziemlich sicher, dass es scheitern wird, weil die sp_executesql-läuft auf einem anderen thread
es hat nichts zu tun mit sp_executesql. es hat zu tun mit der Absicht, eine table-variable. das nächste, was Sie denken, wäre die Verwendung einer temporären Tabelle, aber ich ziemlich sicher, dass es scheitern wird, weil die sp_executesql-läuft auf einem anderen thread
InformationsquelleAutor BAD_SEED | 2013-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelöst, vielen Dank an alle für die Tipps:
EXEC()
.InformationsquelleAutor BAD_SEED
@tempTable Anwendungsbereich ist beschränkt auf den aktuellen Vorgang.
Könnten Sie ersetzen Sie das @ - tempTable mit einer globalen temporären Tabelle (d.h. ## Tabelle), aber sehr vorsichtig sein mit dem Umfang der Tabelle und werden sicher fallen, wenn die Prozedur beendet
InformationsquelleAutor Sparky