程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sqlserver存儲進程中SELECT 與 SET 對變量賦值的差別

sqlserver存儲進程中SELECT 與 SET 對變量賦值的差別

編輯:MSSQL

sqlserver存儲進程中SELECT 與 SET 對變量賦值的差別。本站提示廣大學習愛好者:(sqlserver存儲進程中SELECT 與 SET 對變量賦值的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是sqlserver存儲進程中SELECT 與 SET 對變量賦值的差別正文


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved