SqlServer-存儲過程1.0

定義

存儲過程是一個預編譯的sql語句 ,編譯後可多次使用。

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

作用

可以提高運行效率,並且使用存儲過程的系統更穩定。
更多的可以參考 【隨風飄揚中】的 存儲過程的作用和意義

使用範圍

當一個業務需要操作多個表時可以使用存儲過程來提升效率

怎麼操作

創建無參無輸出存儲過程

--創建存儲過程
create proc cp_books
as
--操作語句
select * from books

--調用不帶參的存儲過程
exec cp_books

創建有參無輸出存儲過程

--多個參數使用逗號隔開
create proc cp_books
(
	@name nvarchar(20)as
--操作語句
select * from books where name like '%'+@name+'%'

--調用帶參的存儲過程
--多個參數使用逗號隔開不需要小括號包裹
exec cp_books @name='aa'

創建無參有輸出存儲過程

--創建存儲過程--
create proc cp_books
(
	@mycount int output  --輸出參數需要outputas
--操作語句
select  @mycount=count(*) from books

--調用有輸出的存儲過程
--先定義一個變量進行接收
declare @mycount int
set @mycount= exec cp_books
print @mycount

創建有參有輸出存儲過程

--創建存儲過程--
create proc cp_books
(
	@name nvarchar(20)
	@mycount int output  --輸出參數需要outputas
--操作語句
select  @mycount=count(*) from books
select * from books where name like '%'+@name+'%'

--調用有輸出的存儲過程
--先定義一個變量進行接收
declare @mycount int
set @mycount= exec cp_books
print @mycount

判斷存儲過程是否存在刪除存儲過程

-- 判斷要創建的存儲過程名是否存在
if exists (select * from dbo.sysobjects 
where id = object_id(N'[dbo].[存儲過程名]') 
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 刪除存儲過程
drop procedure [dbo].[存儲過程名]

儲存過程分頁

--存儲過程
--創建帶輸入參數的存儲過程
go
create proc cp_select_name
(
	@name nvarchar(20),
	@pageindex int,
	@pagecount int
)
as
--offset A rows ,將前A條記錄捨去,fetch next B rows only ,向後在讀取B條數據。
--此方法只適用於2012及以上版本
select * from Book where name like '%'+@name+'%' order by ID offset @pagecount*@pageindex rows fetch next @pagecount rows only

exec cp_select_name @name='js',@pageindex=2,@pagecount=10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章