程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 關於SQL 存儲進程入門基本(變量)

關於SQL 存儲進程入門基本(變量)

編輯:MSSQL

關於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的感化。

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