(轉(zhuǎn))sql server存儲過程中SELECT 與 SET 對變量賦值的區(qū)別

SQL Server 中對已經(jīng)定義的變量賦值的方式用兩種砂沛,分別是 SET 和 SELECT变抽。
對于這兩種方式的區(qū)別匕坯,SQL Server 聯(lián)機叢書中已經(jīng)有詳細的說明蜻底,但很多時候我們
并沒有注意骄崩,其實這兩種方式還是有很多差別的。

SQL Server推薦使用 SET 而不是 SELECT 對變量進行賦值薄辅。
當表達式返回一個值并對一個變量進行賦值時要拂,推薦使用 SET 方法。

下表列出 SET 與 SELECT 的區(qū)別站楚。請?zhí)貏e注意紅色部分脱惰。

set select
同時對多個變量同時賦值 不支持 支持
表達式返回多個值時 出錯 \color{red}{將返回的最后一個值賦給變量}
表達式未返回值 變量被賦null值 \color{red}{變量保持原值}

下面以具體示例來說明問題:

create table chinadba1( 
userid int , 
addr varchar(128)  
) 
go 
insert into chinadba1(userid,addr) values(1,'addr1') 
insert into chinadba1(userid,addr) values(2,'addr2') 
insert into chinadba1(userid,addr) values(3,'addr3') 
go 

表達式返回多個值時,使用 SET 賦值

declare @addr varchar(128) 
set @addr = (select addr from chinadba1) 
/* 
--出錯信息為 
服務器: 消息 512窿春,級別 16拉一,狀態(tài) 1,行 2 
子查詢返回的值多于一個旧乞。當子查詢跟隨在 =蔚润、!=、<尺栖、<=嫡纠、>、>= 之后,或子查詢用作表達式時货徙,這種情況是不允許的左权。 
*/ 
go

表達式返回多個值時,使用 SELECT 賦值

declare @addr varchar(128) 
select @addr = addr from chinadba1 
print @addr --結(jié)果集中最后一個 addr 列的值 
--結(jié)果: addr3  
go 

表達式未返回值時痴颊,使用 SET 賦值

declare @addr varchar(128) 
set @addr = '初始值' 
set @addr = (select addr from chinadba1 where userid = 4 ) 
print @addr --null值  
go 

表達式未返回值時赏迟,使用 SELECT 賦值

declare @addr varchar(128) 
set @addr = '初始值' 
select @addr = addr from chinadba1 where userid = 4 
print @addr --保持原值 
go 

需要注意的是,SELECT 也可以將標量子查詢的值賦給變量蠢棱,如果標量子查詢不返回值锌杀,則變量被置為 null 值。
此時與 使用 SET 賦值是完全相同的
對標量子查詢的概念大家應該都覺得陌生泻仙,舉個例子就能說明

declare @addr varchar(128) 
set @addr = '初始值' 
--select addr from chinadba1 where userid = 4 為標量子查詢語句 
select @addr = (select addr from chinadba1 where userid = 4)  
print @addr --null值 
go
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糕再,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子玉转,更是在濱河造成了極大的恐慌突想,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究抓,死亡現(xiàn)場離奇詭異猾担,居然都是意外死亡,警方通過查閱死者的電腦和手機刺下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門绑嘹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人橘茉,你說我怎么就攤上這事工腋。” “怎么了畅卓?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵擅腰,是天一觀的道長。 經(jīng)常有香客問我髓介,道長惕鼓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任唐础,我火速辦了婚禮箱歧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘一膨。我一直安慰自己呀邢,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布豹绪。 她就那樣靜靜地躺著价淌,像睡著了一般申眼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝉衣,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天括尸,我揣著相機與錄音,去河邊找鬼病毡。 笑死濒翻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的啦膜。 我是一名探鬼主播有送,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼僧家!你這毒婦竟也來了雀摘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤八拱,失蹤者是張志新(化名)和其女友劉穎远荠,沒想到半個月后圃泡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笨腥,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡汞舱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年志衣,在試婚紗的時候發(fā)現(xiàn)自己被綠了茫负。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荚守。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡端铛,死狀恐怖每聪,靈堂內(nèi)的尸體忽然破棺而出旦棉,到底是詐尸還是另有隱情,我是刑警寧澤药薯,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布绑洛,位于F島的核電站,受9級特大地震影響童本,放射性物質(zhì)發(fā)生泄漏真屯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一穷娱、第九天 我趴在偏房一處隱蔽的房頂上張望绑蔫。 院中可真熱鬧,春花似錦泵额、人聲如沸配深。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篓叶。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缸托,已是汗流浹背左敌。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俐镐,地道東北人母谎。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像京革,于是被迫代替她去往敵國和親奇唤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 2017/3/14 RDBMS:關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系模型獨立于語言 SQL有幾種不同類型的語言:數(shù)據(jù)定義語言...
    ancherl閱讀 1,627評論 0 6
  • 語 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,097評論 0 53
  • -- 來源于網(wǎng)絡 -- 更詳細的介結(jié)參考聯(lián)機幫助文檔 xp_cmdshell--*執(zhí)行DOS各種命令匹摇,結(jié)果以文本行...
    overad閱讀 2,363評論 0 13
  • 聽著音樂入睡咬扇, 是一天最后的等待。 夢像搓過肥皂一樣的潔凈柔美 白天的喧囂.煩躁...... 都在如水如皎月般的...
    開心花和開心果閱讀 314評論 3 1
  • 我們不可能都像《心靈捕手》里的威爾一樣幸運廊勃,有發(fā)現(xiàn)他天賦的大學教授懈贺,有全力支持他,懂他的好朋友坡垫。 但是梭灿,我們始終都...
    愛思考的鵝閱讀 214評論 1 4