SQL Serveur : Msg 102, Niveau 15, État 1, Ligne 2 syntaxe Incorrecte près de '='
Je suis en train d'écrire une procédure stockée et je suis de passage la table des noms de paramètres, mais je vais avoir une erreur dans cette partie:
DECLARE
@TableA nvarchar(255)='TableA',
@DOCID1 nvarchar(MAX),
@DOCID2 int;
EXEC ('
SELECT TOP (1) '+ @DOCID1 +'=DOCID1,'+ @DOCID2 +'=DOCID2
FROM [' + @TABLEA + ']
ORDER BY DOCID2')
Après j'exécute cette requête, j'obtiens cette erreur:
Msg 102, Niveau 15, État 1, Ligne 2
Syntaxe incorrecte près de '='
J'ai essayé et je ne peux pas identifier l'erreur, à ce stade, j'ai besoin d'aide..
OriginalL'auteur RicEspn | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
Je crois que vous avez pour concaténer ensemble de votre instruction SQL dans son ensemble, avant de l'exécuter:
Autant que je me souvienne, vous ne pouvez pas avoir des expressions et des calculs à l'intérieur de la
EXEC
de commande obtenir la déclaration préparée avant de la main, puis l'exécuterAussi, je ne suis pas entièrement sûr de ce que les variables de la vôtre hold -
@DocID1
et@DocID2
- voulez-vous définir leur valeur, ou est-ce le nom d'une autre variable de mettre en?Mise à jour: si vous avez réellement voulu définir les valeurs de
@DocID1
et@DocID2
, votre requête a été mauvais d'abord - ensuite, vous besoin de quelque chose comme ceci:mais alors, ces deux variables sont définies à l'intérieur de l'dynamiquement SQL exécutées et ne sont pas disponibles à l ' "extérieur" de votre script.
il a obtenu, merci pour votre aide Marc_s
OriginalL'auteur marc_s
Quelle version de SQL Server? Le sytax -
est prise en charge uniquement à partir de SQL Server 2008. Pour les anciennes versions, vous devez écrire:
OriginalL'auteur Raj