J'essaie de définir une variable à partir d'une requête SQL:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
Évidemment, je ne fais pas cela correctement car cela ne fonctionne pas. Quelqu'un peut-il suggérer une solution?
Merci!
sql
sql-server
tsql
Mr Cricket
la source
la source
Réponses:
Utilisation de SELECT:
Utilisation de SET:
Voir cette question pour la différence entre l'utilisation de SELECT et SET dans TSQL .
avertissement
Si cette instruction select renvoie plusieurs valeurs (mauvaise pour commencer):
SELECT
, la variable reçoit la dernière valeur renvoyée (comme l'a dit womp), sans aucune erreur ni avertissement (cela peut provoquer des bogues logiques)SET
, une erreur se produirala source
Si votre instruction select renvoie plusieurs valeurs, votre variable se voit attribuer la dernière valeur renvoyée.
Pour plus d'informations sur l'utilisation de SELECT avec des variables: http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx
la source
la source
Je préfère simplement le définir à partir de la déclaration declare
la source
À utiliser
TOP 1
si la requête renvoie plusieurs lignes.la source
Vous pouvez l'utiliser, mais n'oubliez pas que votre requête donne 1 résultat, plusieurs résultats lèveront l'exception.
Autrement:
la source
Dans ce cas, si vous avez renvoyé deux résultats ou plus, votre résultat est le dernier enregistrement. Soyez donc conscient de cela si vous pouvez renvoyer deux enregistrements supplémentaires car vous ne verrez peut-être pas le résultat attendu.
la source
Il existe trois approches:
La requête ci-dessous détaille les avantages et les inconvénients de chacun:
la source
Pour ASSIGNER des variables à l'aide d'un SQL, sélectionnez la meilleure pratique comme indiqué ci-dessous
SI vous devez affecter plus d'une variable sur une seule ligne, vous pouvez utiliser ce même SELECT INTO
la source