2012-06-06 10 views
10

Ho due parametriImpostare il valore del parametro da query di selezione

DECLARE @nOdc_Id VARCHAR(50) 
DECLARE @nProject_Id VARCHAR(50) 

E una query di seleziona

Select nOdc_Id ,nProject_Id From ProjectTable Where ProjectId='53' 

Ora voglio impostare il valore del parametro come

Set @=nOdc_Id =nOdc_Id 
And @nProject_Id =nProject_Id 

Si prega di uno qualsiasi aiuto come posso implementarlo in StoredProcedure.

risposta

13
Select @nOdc_Id = nOdc_Id, 
     @nProject_Id = nProject_Id 
From ProjectTable 
Where ProjectId = 53 
4

Si può fare così. Ci sono più approcci.

SET @nOdc_Id = (select nOdc_Id From ProjectTable Where ProjectId='53'); 
SET @nProject_Id = (select nProject_Id From ProjectTable Where ProjectId='53'); 
+1

Questo approccio è raccomandato in pubblicazioni Microsoft. Nel caso in cui l'istruzione SELECT tra parentesi restituisca inaspettatamente più di una riga, l'errore verrebbe generato, cosa che si desidera. Se fosse utilizzato SELECT @ nOdc_Id = nOdc_ID FROM ProjectTable, non si genererebbe alcun errore in caso di più di una riga restituita, si verrebbe a finire con dati errati senza saperlo. –

+0

@ Ivan__83 quindi uso solo questo approccio (o usato quando ho lavorato con T-SQL). – Sajmon

+0

Non so come questa situazione viene gestita in altri RDBMS. Ma questo approccio è preferito in TSQL. –

1

come questo:

DECLARE @nOdc_Id VARCHAR(50) 
DECLARE @nProject_Id VARCHAR(50) 

Select @nOdc_Id = nOdc_Id From ProjectTable Where ProjectId='53' 
select @nProject_Id = nProject_Id From ProjectTable Where ProjectId='53' 
Problemi correlati