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

InformationsquelleAutor BAD_SEED | 2013-08-29

Schreibe einen Kommentar