2010-05-20 7 views
1

J'ai lu dans un grand nombre de sites Web que le code suivant ne fonctionnera pas, où @table_name est une variable de table:INSERT INTO @table_name ... EXEC usp_name

INSERT INTO @table_name EXEC usp_name usp_param1, usp_param2

Mais ce qui précède Le code exact fonctionne correctement pour moi dans une procédure stockée dans SQL Server 2005 (version 9.0.4035).

Même MSDN (URL: http://msdn.microsoft.com/en-us/library/aa260638%28v=SQL.80%29.aspx) mentionne que le code d'insertion ne fonctionnera pas si une tentative d'insertion de club avec exec est exécutée sur une variable de table. Malheureusement, la page MSDN en haut, mentionne que la page s'applique à SQL Server 2000, ce qui ajoute à la confusion.

Quelqu'un pourrait-il nous éclairer? Merci d'avance.

+2

Quelle est la question? Si ça marche, ça marche. –

+1

Mike, le code que j'ai ci-dessus, est sur le point d'être migré en production dans un grand système. Je peux voir que ça fonctionne. Je voulais savoir s'il était légitime d'écrire ce genre de code. – dakaujunk

Répondre

1

La page SQL 2008/2005 MSDN équivalente est différent ::

Cependant, le tableau ne peut pas être utilisé dans la déclaration suivante:

SELECT select_list INTO table_variable

En effet, le SELECT ... INTO crée la table cible et la sémantique de création n'est pas compatible avec la sémantique d'étendue variable.

INSERT INTO @table EXEC ... est pris en charge. Vous ne pouvez pas spécifier un table-valued parameter, mais cela est différent d'une variable de table.

+1

Remus Remus pour la clarification. – dakaujunk

Questions connexes