sql server存儲過程簡單使用


1 創建存儲過程

  1.1 創建簡單的存儲過程

   創建語句:

create proc usp_helloworld
as
begin
    print 'Hello World'
end

  創建完后,調用語句格式 exec + 存儲過程名:exec usp_helloworld

執行結果:

  

  1.2 創建帶參數的存儲過程

   語句:

create proc usp_book
@name nvarchar(50),
@author nvarchar(50)
as
begin
    select * from book where name=@name and author=@author
end

  表中的數據:

  調用存儲過程,因為定義兩個參數,在調用的時候需要給參數賦值。下面兩種方法都行:

1)exec usp_book "神雕俠侶","金庸"   

(2)exec usp_book @name="神雕俠侶",@author="金庸"

  執行結果:

  1.3  帶默認值的存儲過程

  創建語句:

create proc usp_select_hero1
@heroname nvarchar(50)  = '溫青青'
as
begin
    select * from hero where hero=@heroname
end

  表中數據:

  因為參數已經給了默認值,在調用存儲過程的時候,可以不指定參數。

  如:直接調用:exec usp_select_hero1 結果如下:

  也可以重新給參數賦值如:exec usp_select_hero1 @heroname='無塵' 結果如下:

  1.4 創建帶輸出參數的存儲過程output關鍵字

   創建語句:

create proc usp_output
@bookname nvarchar(50),
@recordCount int output --關鍵字代表輸出參數
as
begin
    select * from hero where bookname=@bookname
    --把查詢的記錄條數賦值給變量@recordCount
    set @recordCount = (select count(*) from hero where bookname=@bookname)
end 

  調用帶有參數的存儲過程,需要定義變量,並把變量傳遞給參數,如下:

declare @num int
exec usp_output @bookname='書劍恩仇錄',@recordCount=@num output
select @num as 記錄條數

  結果:

 

 

2 使用存儲過程實現分頁

語句:

create proc usp_fenye
@pagesize int=3, --每頁記錄的條數
@index int=1,    --當前查看第幾頁的內容
@recordcount int output, --總的條數
@pagecount int output --總的頁數
as
begin
    --分頁
    select
        t.id,
        t.bookname,
        t.hero
    from (select *,rn=row_number() over(order by id asc) from hero) as t
    where t.rn between (@index-1) * @pagesize + 1 and @pagesize * @index
    --計算總的條數
    set @recordcount =( select count(*) from hero)
    --計算總的頁數
    set @pagecount=ceiling(@recordcount * 1.0 / @pagesize)  --ceiling向上取整
end

執行:

declare @tiaoshu int
declare @yeshu int
exec usp_fenye @pagesize=5,@index =3,@recordcount=@tiaoshu output,@pagecount=@yeshu output
select @tiaoshu as 總的條數
select @yeshu as 總的頁數

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM