SQL儲存過程詳細介紹及語法
------------恢復內容開始------------
宣告:儲存過程並不推薦在開發中使用,某裡巴巴制定的開發寶典中明令禁止使用儲存過程。
那為什麼還要學?被逼無奈,維護舊版系統不想全部推翻重來,只有硬著頭皮要弄懂,才改的動。
建立儲存過程
SQL Server建立儲存過程:
create procedure 過程名
@parameter 引數型別
@paramater 引數型別
as
begin
end
執行儲存過程
execute 過程名
例項
1.不帶引數的儲存過程
create procedure proc_sql1 as begin delclare @i int set @i = 26 while @i <1 begin print char(ascii('a') + @i) + '的ASCII碼是:' + cast(ascii('a') + @i as varchar(5)) set @i = @i +1 end end
exec proc_sql1
輸出結果:
1 a的ASCII碼是: 97 2 b的ASCII碼是: 98 3 c的ASCII碼是: 99
~~~~~
26 z的ASCII碼是:122
2.資料查詢功能不帶引數的儲存過程
create procedure proc_sql2 as begin select * from employee where salary > 2000 end execute proc_sql2
在儲存過程中可以包含多個select語句,顯示姓名中含有“張”字的職工資訊及其所在的倉庫資訊
create procedure pro_sql3 as begin select * from employee where name like '%張%' select * from warehouse where warehouseNo in (select warehouse from employee where name like '%張%') end go execute pro_sql3
3.帶有輸入引數的儲存過程
找出三個數字中最大的數
create proc proc_sql4 @num1 int, @num2 int, @num3 int as begin declare @max int if @num1>@num2 set @max = @num1 else set @max = @num2 if @num3 > @max set @max = @num3 print '3個數的中最大的數字是:' + cast (@max as varchar (20) ) end execute proc_sql4 3 , 4 ,5
4.求階乘之和
alter proc proc_sql5 @dataSource int as begin declare @sum int ,@temp int, @tempSum int set @sum = 0 set @temp = 1 set @tempSum = 1 while @temp <= @dataSource begin set @tempSum = @tempSum * @temp set @sum = @sum + @tempSum set @temp = @temp +1 end print cast ( @dataSource as varchar(50) ) + '的階乘之和為:' + cast (@sum as varchar(50)) end execute proc_sql5 5
5.帶有輸入引數的資料查詢功能的儲存過程
create proc proc_sql6 @minSalary int, @maxSalary int as begin select * from empolyee where salary > @minSalary and salary< @maxSalary end execute proc_sql6 8000,10000
6. 帶有條件判斷的插入功能的儲存過程
create proc proc_sql7 @id varchar(30), @deptNo varchar(30), @name varchaer(50), @sex varchar(10), @salary int(10) as begin if Exists (select * from employee where id = @id) print ‘該員工號已經存在,請輸入正確的id’ else begin if(Exists (select * from dept where de))
7.儲存過程的自動執行
使用sp_procoption系統儲存過程即可自動執行一個或者多個儲存過程,其語法格式如下:
sp_procoption [@procName=] 'procedure', [@optionName=] 'option', [@optionValue=] 'value'
各個引數含義如下:
[@procName=] 'procedure': 即自動執行的儲存過程
[@optionName=] 'option':其值是startup,即自動執行儲存過程
[@optionValue=] 'value':表示自動執行是開(true)或是關(false)
sp_procoption @procName='masterproc', @optionName='startup', @optionValue='true'
利用sp_procoption系統函式設定儲存過程masterproc為自動執行
8. 監控儲存過程
可以使用sp_monitor可以檢視SQL Server伺服器的各項執行引數,其語法格式如下:
sp_monitor
該儲存過程的返回值是布林值,如果是0,表示成功,如果是1,表示失敗。該儲存過程的返回集的各項引數的含義如下:
*last_run: 上次執行時間
*current_run:本次執行的時間
*seconds: 自動執行儲存過程後所經過的時間
*cpu_busy:計算機CPU處理該儲存過程所使用的時間
*io_busy:在輸入和輸出操作上花費的時間
*idle:SQL Server已經空閒的時間
*packets_received:SQL Server讀取的輸入資料包數
*packets_sent:SQL Server寫入的輸出資料包數
*packets_error:SQL Server在寫入和讀取資料包時遇到的錯誤數
*total_read: SQL Server讀取的次數
*total_write: SQLServer寫入的次數
*total_errors: SQL Server在寫入和讀取時遇到的錯誤數
*connections:登入或嘗試登入SQL Server的次數
------------恢復內容結束------------