SQL Server存儲過程的創建

SQL Server存儲過程的創建

概念

存儲過程(Stored Procedure)是在數據庫系統中,一組爲了完成特定功能的SQL 語句集,它存儲在數據庫中,一次編譯後永久有效,用戶調用存儲過程並傳遞參數來執行它。

作用

優勢:響應時間上來說有優勢,可以給我們帶來運行效率提高的好處,且使用存儲過程的系統更加穩定
缺點:維護性較差,相對於簡單sql,存儲過程並沒有什麼優勢,並且在進行調試時比較困難

存儲過程和觸發器的區別

觸發器與存儲過程的主要區別在於觸發器的運行方式。存儲過程必須有用戶、應用程序或者觸發器來顯示的調用並執行,而觸發器是當特定時間出現的時候,自動執行或者激活的,與連接用數據庫中的用戶、或者應用程序無關

案例

先在數據庫創建了兩張表


1.不帶參數的存儲過程

語句

--1.不帶參數的存儲過程
--創建存儲根據名稱查詢數據(create創建,alter修改,drop刪除)
create proc cp_select_book_bybook --創建存儲過程
as
select * from Books --查詢book表

再進行調用

--調用
exec cp_select_book_bybook

調用後執行結果

2.帶輸入參數的存儲過程

語句

--2.帶輸入參數的存儲過程
--根據名稱查詢
go
create proc cp_select_book_ByName
(
   @name varchar(50)
)
as
select * from Books where name like '%'+@name+'%'

再進行調用

--調用
exec cp_select_book_ByName '紅樓'

調用後執行結果

3.帶輸出參數的存儲過程

語句

--3.帶輸出參數的存儲過程
--根據名稱查詢,返回記錄,同時返回記錄數
go
create proc cp_select_books_ByNameExt
(
  @name varchar(50), --多個參數用分號隔開
  @recordRows int output --輸出類型
)
as
select * from Books where name like '%'+@name+'%'
select @recordRows=count(*) from Books

再進行調用

--調用
--調用
--定義一個變量,接收返回參數@recordRows的值
declare @rs int
exec cp_select_books_ByNameExt '西遊',@rs out
print '查詢的記錄數是:'+convert(varchar(5),@rs)

調用後執行結果

4.分頁的存儲過程

語句

--4.分頁的存儲過程
--根據名稱,頁碼,每頁顯示條數 --輸入參數
--返回查詢條件的總記錄數 --輸出參數
--顯示查詢結果
go
create proc cp_select_books_ByPage
(
  @name varchar(50), --多個參數用分號隔開
  @pageIndex int out, --頁碼
  @pageSize int out, --每頁顯示條數
  @recordRows int out --總記錄數
)
as
select top (@pageSize) * from Books
where id not in(
select top (@pageSize*(@pageIndex-1)) id 
from Books 
where name like '%西遊%'
order by id
)
and name like '%西遊%' order by id
select @recordRows=count(*) from Books

再進行調用

--調用
--定義一個變量,接收返回參數@recordRows的值
declare @rs int
exec cp_select_books_ByPage '西遊','1','5',@rs out
print @rs

調用後執行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章