校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別

sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別

熱門標簽:臨沂智能電銷機器人加盟哪家好 一個導航軟件能用幾個地圖標注點 電銷外呼有錄音系統有哪些 貴州房產智能外呼系統供應商 申請400電話在哪辦理流程 鎮江網路外呼系統供應商 外呼運營商線路收費 小e電話機器人 百度地圖標注改顏色

SQL Server推薦使用 SET 而不是 SELECT 對變量進行賦值。
當表達式返回一個值并對一個變量進行賦值時,推薦使用 SET 方法。
下表列出 SET 與 SELECT 的區別。請特別注意紅色部分。

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

下面以具體示例來說明問題:
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,狀態 1,行 2
子查詢返回的值多于一個。當子查詢跟隨在 =、!=、、=、>、>= 之后,或子查詢用作表達式時,這種情況是不允許的。
*/
go
表達式返回多個值時,使用 SELECT 賦值 declare @addr varchar(128)
select @addr = addr from chinadba1
print @addr --結果集中最后一個 addr 列的值
--結果: 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

您可能感興趣的文章:
  • SQLServer中SELECT語句的執行順序
  • SQLServer之常用函數總結詳解
  • SqlServer數據庫遠程連接案例教程
  • SQL Server之SELECT INTO 和 INSERT INTO SELECT案例詳解

標簽:延邊 澳門 三明 保定 日照 嘉興 晉城 合肥

巨人網絡通訊聲明:本文標題《sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別》,本文關鍵詞  sqlserver,存儲,過程中,SELECT,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別》相關的同類信息!
  • 本頁收集關于sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 中山市| SHOW| 芜湖市| 茂名市| 岗巴县| 商丘市| 平安县| 浦江县| 黎川县| 和田县| 察隅县| 斗六市| 南川市| 聂荣县| 永仁县| 通州区| 通海县| 万州区| 修文县| 辽阳市| 德格县| 游戏| 日照市| 元朗区| 木兰县| 南澳县| 张掖市| 鄂伦春自治旗| 英山县| 合江县| 调兵山市| 凤台县| 广西| 长泰县| 手游| 杭锦后旗| 玉树县| 瑞金市| 连平县| 枣强县| 乌拉特中旗|