關於SQL 存儲進程入門基本(變量)。本站提示廣大學習愛好者:(關於SQL 存儲進程入門基本(變量))文章只能為提供參考,不一定能成為您想要的結果。以下是關於SQL 存儲進程入門基本(變量)正文
上一篇我們講到了SQL存儲進程的根本界說,怎樣創立,應用,這篇就來說一下變量的應用。
變量分文部分變量和全局變量
部分變量是@開首,全局變量是@@開首,這裡我們重要講部分變量,全局變量我們前面再講。
在c# 說話中,界說一個變量很簡略,例如
int i=0; --界說加賦值。
在sql中,界說一個變量須要症結字DECLARE,還須要個特別符號標志(@)表現是變量。
看看簡略的聲明語法:
Declare @Local_Var data_type
@Local_Var是一個全體,表現一個變量。
data_type就是數據類型了,這個年夜家都很熟習的,例如int,decimal ,float,text等。
變量聲清楚明了,怎樣賦值呢,能在聲明的時刻賦值麼?像如許
declare @ID=2 varchar(20);
如許是不可的,然則如許呢
declare @ID varchar(20)=2
print @ID --這句話的意思是在sql server窗口中打印出變量的值
如許是准確的,成果是
---------
2
聲明可以賦值,再聲明後是可以再賦值的,
這裡有兩種方法賦值
set,select ,先看根本用法,再說差別
一,根本用法
declare @ID varchar(20) --界說一個變量叫@ID
set @ID=3 --變量賦值為3
print @ID --打印
select @ID=1 --變量賦值為1
print @ID --打印
檢查成果
-------------
從下面看出來了,Set,與select都可以給變量賦值。
然後我們看看變量的運算,運算其實很簡略,上面看看加減法
declare @ID varchar(20)
set @ID=3
print @ID
select @ID=1+@ID --將變量@id加1
print @ID
select @ID=(select 1+5) --相似於@ID=1+5
print @ID
select @ID=(select 1-@ID) --相似於@ID=1-@ID
print @ID
成果
-----------
3
4
6
-5
我們再看看乘除法呢
declare @ID int
set @ID=3
print @ID
select @ID=2* @ID --乘以2
print @ID
select @ID=(@ID/2) --除以2
print @ID
select @ID=(@ID * @ID) --乘方
print @ID
成果
-----------
3
6
3
9
最初看一下模運算%
declare @ID int
set @ID=(10%3)
print @ID
select @ID=(10%2)
print @ID
成果
---------
二,差別
1,表達式前往多個值時
表達式前往多個值時,應用 SET 賦值
declare @name varchar(128)
set @name=(select username from userinfo)
print @name
/*
--失足信息為
辦事器: 新聞 512,級別 16,狀況 1,行 2
子查詢前往的值多於一個。當子查詢追隨在 =、!=、<、<=、>、>= 以後,或子查詢用作表達式時,這類情形是不許可的。
*/
表達式前往多個值時,應用 SELECT 賦值
declare @name varchar(20)
select @name= username from userinfo
print @name --成果集中最初一個 username 列的值
成果:
---------
wangwu
2,表達式未前往值時
--表達式未前往值時,應用 SET 賦值
declare @name varchar(20)
set @name='jack'
set @name= (select username from userinfo where username='not')
print @name --Null值
成果
--------
--表達式未前往值時,應用 SELECT 賦值
declare @name varchar(20)
set @name='jack'
select @name=username from userinfo where username='not'
print @name --jack,保留本來的值
成果
-------
jack
這裡簡略總結下
下表列出 SET 與 SELECT 的差別。
前提 set select 表達式前往多個值 失足 將前往的最初一個值賦給變量 表達式未前往值 變量被賦為null值 變量堅持原值
上面來看個綜合的例子
CREATE PROCEDURE UserLogin1 --創立一個存儲進程來斷定登錄
@name varchar(20),
@password varchar(20),
@inReturn int output --輸入參數
AS
--這裡來界說一個變量來保留暗碼
Declare @strPwd varchar(20)
BEGIN
select @strPwd=userPass from userinfo where userName=@name --經由過程select 給變量@strPwd賦值
if(@password=@strPwd)
begin
set @inReturn=1
--假定來更新個時光
update userinfo set registertime=getdate() where userName=@name
end
else
set @inReturn=-1 --假如暗碼不准確,前往-1
END
GO
--測試辦法
declare @test int
exec UserLogin1 'admin','admin',@test output --這裡假如沒有output症結字,則@test的值為NULL
print @test
成果:
-------------
(1 行受影響)
1
--或如許挪用:
declare @test int
EXEC UserLogin1 @name='admin',@password='admin',@inReturn=@test output
print @test
--成果跟下面是一樣的
--假如我們登錄不准確,像如許
declare @test int
EXEC UserLogin1 @name='admin1',@password='admin',@inReturn=@test output
print @test 成果
-------------
-1 --這裡的值是存儲進程中設置的值。假如掉敗,則前往-1,這就是output的感化。