2017-06-30 39 views
1

我在SQL過程如下聲明:什麼時候選擇沒有行被選擇時聲明變量?

declare @my_var char(10) 
select @my_var = '' 
@my_var output 

select @my_var = my_db.my_variable from dba.my_db 

什麼被分配到@my_var如果沒有相應的行?

+5

試一試'選擇@ my_var' :) – TriV

+0

@TriV問題是我不能 –

+0

爲什麼你不能測試它自己:

您可以通過運行下面的代碼看到自己這一點? – GuidoG

回答

4

如果查詢不返回任何結果,變量不會更新;所以會保留它以前分配的值(或者如果它沒有被分配給null)。

declare @my_var char(10) 
set @my_var = 'a' 
select @my_var = 'b' where 1=0 
select @my_var --returns a 

declare @my_var2 char(10) 
select @my_var2 = 'b' where 1=0 
select @my_var2 --returns null