SQL Server 2008 R2: renvoie le résultat de la procédure stockée et l'insère dans la table temporaire

J'ai un testing table avec quelques données:

Table:

 select * from testing; cola colb --------- AB CD CX ST SQ 

Procédure stockée:

 CREATE PROC spTesting @TableName nvarchar(max) AS DECLARE @sql nvarchar(max) SET @sql = 'SELECT * from '+ @TableName + '' EXEC(@sql) GO 

Exécution de la procédure stockée:

 execute spTesting 'testing' 

Je vais get le résultat:

 cola colb --------- AB CD CX ST SQ 

Note : Après l'exécution de la procédure stockée, je veux insert des résultats dans la temptable que je ne veux pas déclarer avec la structure avant.

Comme:

  select * into temptable from execute spTesting 'testing' 

Il y a cette syntaxe simple d'insertion dans une table / temptable, un set de résultats d'une procédure

 INSERT INTO TempTable EXEC MyProc 

Mais le gotcha avec cette approche est que TempTable devrait déjà exister avant que vous puissiez faire ce qui précède.

Lorsque vous appelez une procédure stockée et que vous insérez son jeu de résultats dans une table, vous ne pouvez pas créer une table à la volée comme vous pouvez le faire avec une instruction select * INTO temptabe From tablename .

Vous devrez d'abord créer cette table, puis l'insert dans votre procédure stockée.

Maintenant, puisque certaines tables peuvent avoir 50 colonnes et find leur DDL et créer une table avant de pouvoir exécuter la procédure, il existe un moyen simple de contourner quelque chose comme ….

 -- before you execute the procedure SELECT * INTO TempTable FROM TargetTable WHERE 1 =2 -- this will create an empty table with matching schema of your TargetTable -- Now execute the procedure INSERT INTO TempTable EXECUTE spTesting 'TargetTable'