J'ai une procédure stockée dans SQL Server 2005 avec plusieurs variables et je souhaite définir les valeurs de ces variables à l'aide d'une instruction select. Les trois variables proviennent d'un même tableau et il devrait exister un moyen de les définir en utilisant une instruction select à la place de la méthode actuelle (voir ci-dessous). S'il vous plaît aidez-moi à le comprendre.
DECLARE @currentTerm nvarchar(max)
DECLARE @termID int
DECLARE @endDate datetime
SET @currentTerm =
(
Select CurrentTerm from table1 where IsCurrent = 1
)
SET @termID =
(
Select TermID from table1 where IsCurrent = 1
)
SET @endDate =
(
Select EndDate from table1 where IsCurrent = 1
)
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
from table1
where IsCurrent = 1
L’un des avantages de votre approche actuelle est qu’elle générera une erreur si le prédicat renvoie plusieurs lignes. Pour reproduire que vous pouvez utiliser.
SELECT @currentTerm = currentterm,
@termID = termid,
@endDate = enddate
FROM table1
WHERE iscurrent = 1
IF( @@ROWCOUNT <> 1 )
BEGIN
RAISERROR ('Unexpected number of matching rows',
16,
1)
RETURN
END