什麼是儲存過程呢?
儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。
通俗來講:儲存過程其實就是能完成一定操作的一組sql語句。
那為什麼要用儲存過程呢?
1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。
2.當對資料庫進行複雜操作時,可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。
3.儲存過程可以重複使用,可減少資料庫開發人員的工作量。
4.安全性高,可設定只有某些使用者才具有對指定儲存過程的使用權
那儲存過程怎麼用呢?
以下通過表student 來了解儲存過程,因為是要了解儲存過程的簡單用法,所以所有例子均很簡單。
無引數儲存過程:
選出student表中的所有資訊,
create proc stuproc
as//此處 as 不可以省略不寫
begin //begin 和 end 是一對,不可以只寫其中乙個,但可以都不寫
select s#,sname,sage,s*** from student
endgo
有引數儲存過程:
全域性變數
全域性變數也稱為外部變數,是在函式的外部定義的,它的作用域為從變數定義處開始,到本程式檔案的末尾。
選出指定姓名的學生資訊:
create proc stuproc
@sname varchar(
100)
asbegin
select s#,sname,sage,s*** from student
where
sname
=@sname
endgo
exec stuproc '趙雷
' //執行語句
上面是在外部給變數賦值,也可以在內部直接給變數設定預設值
create proc stuproc
@sname varchar(
100)='
趙雷'asbegin
select s#,sname,sage,s*** from student
where
sname
=@sname
endgo
exec stuproc
也可以把變數的內容輸出,使用output
create proc stuproc
@sname varchar(
100),
@isright
intoutput //傳出引數
asif
exists (select s#,sname,sage,s*** from student
where
sname
=@sname)
set@isright =1
else
set@isright=0
godeclare @isright
intexec stuproc '趙雷
', @isright output
select @isright
以上是全域性變數,下面來了解區域性變數
區域性變數也稱為內部變數。區域性變數是在函式內作定義說明的。其作用域僅限於函式內部,離開該函式後再使用這種變數是非法的。
區域性變數的定義:必須先用declare命令定以後才可以使用,declare
區域性變數的賦值方法:set或者select
區域性變數的顯示:select @變數名
create proc stuproc
asdeclare @sname varchar(
100)
set@sname='
趙雷'select s#,sname,sage,s*** from student
where
sname
=@sname
goexec stuproc
那如果是要把區域性變數的資料顯示出來怎麼辦呢?
create proc stuproc
asdeclare @sname varchar(
100)
set@sname
=(select sname from student
wheres#=
01)select @sname
goexec stuproc
SQL儲存過程學習
一 sql儲存過程的概念,優點及語法整理在學習程式過程之前,先了解下什麼是儲存過程?為什麼要用儲存過程,他有那些優點 定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。...
SQL儲存過程學習
本文從sql儲存過程的概念,優點,語法,建立技巧,呼叫等多方面介紹了sql儲存過程。一 sql儲存過程的概念,優點及語法 整理在學習程式過程之前,先了解下什麼是儲存過程?為什麼要用儲存過程,他有那些優點 定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫...
SQL儲存過程學習
一 sql儲存過程的概念,優點及語法 整理在學習程式過程之前,先了解下什麼是儲存過程?為什麼要用儲存過程,他有那些優點 定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令...