存儲過程

--1.什麼是存儲過程 --存儲過程(procedure)相似於java語言中的方法 --用來執行管理任務或應用複雜的業務規則 --存儲過程能夠帶參數,也能夠返回結果 --存儲過程能夠包含數據操做語句、變量、邏輯 控制語句等 --2.存儲過程的優勢 --執行速度更快 --容許模塊化程序設計  --提升系統安全性 --減小網絡流通量 --3.存儲過程的分類 --系統存儲過程 --由系統定義,存放在master數據庫中 --系統存儲過程的名稱都以「sp_」開頭或」xp_」開頭 --用戶自定義存儲過程 --由用戶在本身的數據庫中建立的存儲過程 --4.定義存儲過程的語法
 --Create Procedure procedure_name --As --Sql_statement --4.1 建立存儲過程
create procedure p1 as
select productid,productname,unitprice from products --4.2調用
execute p1 --4.3存儲過程的參數分兩種: 輸入參數 輸出參數
create procedure p2 --定義輸入輸出參數
@pname varchar(10)--注意,聲明變量不須要declare
as
select productid,productname,unitprice from products where productname like '%'+@pname+'%'

execute p2 'ch'

create procedure p3 @num1 int, --輸入參數
@num2 int, @sum int output --輸出參數
as
set @sum = @num1 + @num2

declare @s  int
exec p3 1,1,@s output print @s

5.1建立函數 create function f1(@num1 int,@num2 int) returns int --聲明函數返回類型
as
begin
declare @sum int
set @sum = @num1+@num2
return @sum --函數的返回值
end
--5.2調用函數方式:函數名()
print dbo.f1(1,1) --6.分頁
create procedure p4 @pageNo int=1, @pageSize int=5, @totalPage int output as
select top (@pageSize) productid,productname,unitprice from products where productid not in (select top ((@pageNo-1)*@pageSize) productid from products) --總頁數
declare @total int
select @total=count(*) from products --統計products表中的總記錄數 10/5 12/5
set @totalPage = @total / @pageSize
if @total%@pageSize<>0
   set @totalPage=@totalPage+1

--調用者獲得第幾頁的數據和總頁數
declare @t int
exec p4 5,3,@t output print @t

--瞭解內容1 --能夠使用PRINT語句顯示錯誤信息,但這 些信息是臨時的,只能顯示給用戶  --RAISERROR 顯示用戶定義的錯誤信息時 --可指定嚴重級別, --設置系統變量@@ERROR --記錄所發生的錯誤等

--瞭解內容1:經常使用的系統存儲過程