INSERT INTO @TABLE EXEC @requêtes avec SQL Server 2000
Est-il vrai que SQL Server 2000, vous ne pouvez pas insérer dans une table de variables en utilisant exec?
J'ai essayé ce script et a obtenu un message d'erreur EXECUTE cannot be used as a source when inserting into a table variable.
declare @tmp TABLE (code varchar(50), mount money)
DECLARE @q nvarchar(4000)
SET @q = 'SELECT coa_code, amount FROM T_Ledger_detail'
INSERT INTO @tmp (code, mount)
EXEC sp_executesql (@q)
SELECT * from @tmp
Si vrai, que dois-je faire?
- Si c'est vrai, vous devriez
CREATE TEMP TABLE
(je suis sûr que vous pouvez insérer dans une table temporaire de EXEC). - "Est-il vrai?" - oui - "Toutefois, le tableau ne peut pas être utilisé dans les déclarations suivantes: INSERT INTO table_variable EXEC stored_procedure"
- Ok, je l'ai eu, c'est comme @Anton Kovalenko dit, j'ai besoin de créer une table temporaire , pas une variable de Table ... Thx. 🙂
Vous devez vous connecter pour publier un commentaire.
N. B. - cette question et la réponse se rapportent à la version 2000 de SQL Server. Dans les versions ultérieures, la restriction sur
INSERT INTO @table_variable ... EXEC ...
ont été levées et donc ça ne s'applique pas pour ces versions ultérieures.Vous aurez à passer à une table temp:
De la la documentation:
2000
et je suis lié à la 2000 de la documentation en disant qu'il n'est pas disponible.La documentation est trompeuse.
J'ai le code suivant fonctionne en production
Si vous voulez dans la requête dynamique
@q
variable. Bien essayé, mais pas de dés.