46 Stimmen

SQL Stored Procedure Variablen mit SELECT setzen

Ich habe eine gespeicherte Prozedur in SQL Server 2005 mit mehreren Variablen, und ich möchte die Werte dieser Variablen mit einer Select-Anweisung festlegen. Alle drei Variablen stammen aus derselben Tabelle, und es sollte eine Möglichkeit geben, sie mit einer Select-Anweisung zu setzen, anstatt wie unten gezeigt. Bitte helfen Sie mir, dies herauszufinden.

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
)

79voto

Joe Stefanelli Punkte 128819
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate
    from table1
    where IsCurrent = 1

15voto

Martin Smith Punkte 417623

Ein Vorteil Ihres derzeitigen Ansatzes ist, dass er einen Fehler auslöst, wenn mehrere Zeilen durch das Prädikat zurückgegeben werden. Um das zu reproduzieren, können Sie verwenden.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X