2011-01-10 2 views
34

Ho una stored procedure in SQL Server 2005 con più variabili e voglio impostare i valori di queste variabili utilizzando un'istruzione select. Tutte e tre le variabili provengono da una stessa tabella e ci dovrebbe essere un modo per impostarle usando una sola istruzione select invece del modo in cui ho attualmente come mostrato di seguito. Per favore aiutami a capirlo.SQL Stored Procedure set variables using SELECT

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 
) 

risposta

66
select @currentTerm = CurrentTerm, @termID = TermID, @endDate = EndDate 
    from table1 
    where IsCurrent = 1 
+0

Ho scritto le dichiarazioni simili. Confrontando la mia affermazione con questa, ho ricevuto @currentTerm = CurrentTerm come variabile e il valore restituito è NULL. Eventuali suggerimenti? – srbhattarai

12

Un vantaggio vostro approccio attuale ha è che esso genererà un errore se più righe vengono restituiti dal predicato. Per riprodurre ciò che è possibile utilizzare.

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