web-dev-qa-db-fra.com

La procédure stockée SQL définit les variables à l'aide de SELECT

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
)
38
User_1983
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
    from table1
    where IsCurrent = 1
72
Joe Stefanelli

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  
14
Martin Smith