定義:
sql語句執行的時候要先編譯,然後執行。儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。
優點:允許模組化程式設計,只需建立一次儲存過程,並將其儲存在資料庫中,以後可在程式中呼叫該過程任意次
執行效益高
減少網路流量
可保證資料的安全性和完整性
分類:系統儲存過程 以sp_開頭並存放在master資料庫中
擴充套件儲存過程 以xp_開頭
使用者自定義儲存過程 使用者自己定義
這裡重點介紹使用者自定義儲存過程
自定義儲存過程又分為兩種:帶引數的儲存過程及不帶引數的儲存過程
帶引數的儲存過程又分為:帶輸入引數的儲存過程和帶輸出引數的儲存過程
儲存過程語法規則:
create proc[edure](關鍵字,中括號內為可選內容) procname(儲存過程名字)
@引數 資料型別=預設值, (輸入引數)
@引數 資料型別 output(輸出引數必須加上output) as
sql語句 go
刪除儲存過程
建立的儲存過程位於sysobjects表中
if exists(select * from sysobjects where name='儲存過程名字')
drop proc 儲存過程 go
儲存過程執行使用關鍵字exec
執行無參儲存過程
exec 儲存過程名
執行輸入引數儲存過程 如:
exec 儲存過程 引數值
執行輸出引數的儲存過程要求定義變數用來接受儲存過程的返回值
declare @count int (資料型別需和儲存過程中輸出引數型別一致)
exec 儲存過程 輸出引數 output (output不能少)
print 輸出引數 (用於顯示輸出引數)
建立無參的儲存過程
查詢student表中所有記錄
if exists(select * from sysobjects where name='proc_select')
drop proc proc_select go
create proc proc_select as
select * from student go
執行儲存過程
exec proc_select 效果類似於 select * from student
建立帶輸入引數的儲存過程
比如根據使用者名稱查詢使用者密碼
if exists(select * from sysobjects where name='proc_username')
drop proc proc_username go
create proc proc_username
@username varchar(50) as
select pwd from userinfo where
username=@username
執行儲存過程:
exec proc_username admin (或@username=admin)
建立帶輸出引數的儲存過程執行時需要自定義乙個變數用來接受儲存過程返回的值
比如查詢userinfo表中有多少條記錄
if exists(select * from sysobjects where name='proc_num')
drop proc proc_num go
create proc proc_num
@count int output (output不能少,不能賦預設值) as
select @count=count(*) from userinfo go
執行儲存過程
declare @n int
exec proc_num @n output (output不能少) go
print @n 顯示表中有多少條記錄
注:定義引數時多個引數間用逗號隔開而不是分號最後乙個引數逗號可省略
儲存過程的初步認識
1 建立和刪除儲存過程 建立儲存過程,需要有create procedure或create any procedure的系統許可權。該許可權可由系統管理員授予。建立乙個儲存過程的基本語句如下 create or replace procedure 儲存過程名 引數 in out in out 資料型...
儲存過程學習 1 認識
軟體 pl sql developer 1 新建sql視窗,輸入如下 create or replace procedure skeleton isbegin null end 儲存為skeleton.sql 2 新建命令視窗,輸入並執行 sql execute skeleton pl sql pr...
儲存過程 觸發器的認識
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。與表事件相關的特殊的儲存過程。他的執...