2010-02-02 4 views
1

Je travaille dans SQL Server 2000. La requête suivante ne fonctionne pasExécution d'une procédure stockée pour insérer des enregistrements dans une table - SQL Server 2000

declare @TempAccountKey Table (AccKey int,SitName varchar(1000),SitKey int) 
insert into @TempAccountKey(AccKey,AccName) 
exec [usp_Get_AccountForUser] @UserName 

Il jette l'erreur

EXECUTE ne peut pas être utilisé comme source lors de l'insertion dans une variable de table.

Des idées?

# 1


Le serveur lié est correctement configurée. Si j'exécute la requête suivante

exec [ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser] 

il montre l'erreur 'Impossible de trouver la procédure stockée'.

Des idées?

VSN

Répondre

3

Utilisez une table temporaire au lieu

CREATE TABLE #TempSiteKey (AccKey int,SitName varchar(1000),SitKey int) 

insert into #TempSiteKey (AccKey,AccName) 
exec [usp_Get_AccountForUser] @UserName 

DROP TABLE #TempSiteKey 

Et la raison pour laquelle vous ne pouvez pas appeler la procédure est parce que vous avez délimité incorrectement

exec [ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser] 

signifie en fait exécuter la procédure appelée 'ABC-SQL-PROD.DBabc.dbo.usp_Get_ABCForUser'.

Qu'est-ce que vous voulez est:

exec [ABC-SQL-PROD].[DBabc].[dbo].[usp_Get_ABCForUser] 
+0

Cant-je faire avec la variable de table sans utiliser une table temporaire? Je suis capable d'exécuter ce code parfaitement dans sql server 9.0. Alors, cela signifie-t-il que 8.0 ne soutiendra pas cela? – NLV

+0

Correct. Je n'avais pas réalisé qu'ils avaient finalement ajouté ceci; il ne fonctionnera certainement pas dans SQL 2K avec une variable de table. – Joe

+0

Si vous récupérez simplement 1 ligne, vous pouvez envisager d'utiliser les paramètres OUTPUT au lieu de renvoyer un jeu de résultats. –

Questions connexes