2009-07-06 9 views
4

Je suis en train d'accomplir ce qui est décrit ici:insertion dans une table temporaire à partir d'une procédure stockée sur Sql Server 2000

http://sqldev.wordpress.com/2008/05/06/insert-into-temporary-table-from-stored-procedure/

L'article dit (avec le soutien via les commentaires) que cela fonctionne sur SQL sever 2000 mais peut ne pas être aussi facile.

C'était un peu délicat avant 2008 - comme il se dans SQL Server 2008, ce peut se faire facilement.

et un commentaire: Etats

Ce n'est pas une caractéristique 2008. il était là depuis que je me souviens ... de SQL Server 2000? C'est une super fonctionnalité quand même!

Comment puis-je rapidement accomplir cela pour SQL Server 2000?

En utilisant le code l'article est basé sur, je reçois le message d'erreur suivant:

Msg 197, Level 15, State 1, Line 7 
EXECUTE cannot be used as a source when inserting into a table variable. 

Je ne trouve this Stackoverflow post et il soutient également l'idée que cela peut être fait dans SQL Server 2000 mais post était d'adresser SQL Server 2005 et il ne va pas à 2000 beaucoup.

Répondre

7

Vous pouvez le faire dans SQL Server à partir de la version 2005. Bien que SQL Server 2000 prenne en charge les variables de table, il ne prend pas en charge INSERT avec EXECUTE pour une variable de table. L'alternative la plus proche supportée est d'utiliser une table temporaire.

Au lieu d'utiliser une variable de table comme @mytable, utilisez une table appelée quelque chose comme #mytable et vous pouvez insert en utilisant le exec proc stocké. Vous devez d'abord créer la table temporaire à l'aide de la commande create table.

+0

Merci. Vous avez parfaitement raison. J'aurais dû le réaliser à partir du message d'erreur. –

4

Essayez d'utiliser une vraie table temporaire au lieu d'une varaible table ...

CREATE TABLE #jobs 
(jobcount int 
) 
INSERT 
INTO #jobs 
EXEC 
sp_executesql 
N’select 1 AS jobcount’ 
SELECT 
* 
FROM #jobs 
+1

Merci aussi. –

Questions connexes