1.什麼是儲存過程?
儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。
通俗來講:儲存過程其實就是能完成一定操作的一組sql語句。
2.儲存過程的優點和缺點
優點:響應時間上來說有優勢,可以給我們帶來執行效率提高的好處,且使用儲存過程的系統更加穩定。
缺點:維護性較差,相對於簡單sql,儲存過程並沒有什麼優勢,並且在進行除錯時比較困難。
3.為什麼要用儲存過程?
a.效率高: 儲存過程編譯一次後,就會存到資料庫,每次呼叫時都直接執行。
b.安全性高:完成某個特定功能的儲存過程一般只有特定的使用者可以使用,具有使用身份限制,更安全。
c.復用性高:儲存過程往往是針對乙個特定的功能編寫的,當再需要完成這個特定的功能時,可以再次呼叫該儲存過程。
1.不帶引數的儲存過程
2.帶輸入引數的儲存過程select
*from
books
go--建立儲存過程
create proc cp_sclect_books
asselect
*from books
--呼叫
exec cp_sclect_books
alter--修改
3.帶輸入,帶輸出引數且進行模糊查詢,返回記錄數,還要返回記錄go
alter proc cp_select_books_byname
( @name nvarchar(50
))asselect
*from
books
where
name like'%'
+@name+
'%'--呼叫
exec cp_select_books_byname'奇奇'
區域性變數的定義:必須先用declare命令定以後才可以使用,declarego
create proc cp_select_bynameex
(@name nvarchar(50
),@rowcount int
out)
asselect
*from
books
where name like '%'
+@name+
'%'select @rowcount=
count(*
)from
books
where name like '%'
+@name+
'%'--呼叫
go--定義乙個變數,接收返回值@rowcount
declare @rows int
exec cp_select_bynameex'奇奇'
,@rows out
print @rows
4.建立乙個儲存過程,可以進行分頁查詢
注意,在sql server中,所有使用者定義的變數都以「@」開頭,output關鍵字表示這個引數是用來輸出的,as之後就是儲存過程內容了。go
create proc cp_page
(@name nvarchar(50
),--名稱
@pageindex int
,--頁碼
@pagesize int
,--每頁顯示多少條
@pagerows int
out--輸出引數,顯示滿足條件的行數)as
--查詢名稱是"奇奇"查詢第二頁,每頁顯示十條
select top (@pagesize)
*from
books
where id not in
(select top (@pagesize*
(@pageindex-1)
) id from
books
where name like '%'
+@name+
'%'order by id
)order by id
--滿足條件工多少條
select @pagerows=
count(*
)from
books
where name like'%'
+@name+
'%'--呼叫
declare @prows int
exec cp_page'貓狗',1
,10,@prows out
print @prows
儲存過程的理解
1.什麼是儲存過程?儲存過程就是作為可執行物件存放在資料庫中的乙個或多個sql命令。通俗來講 儲存過程其實就是能完成一定操作的一組sql語句。2.儲存過程的優點和缺點 優點 響應時間上來說有優勢,可以給我們帶來執行效率提高的好處,且使用儲存過程的系統更加穩定。缺點 維護性較差,相對於簡單sql,儲存...
儲存過程的理解
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效...
理解T SQL 儲存過程
儲存過程的定義 描述就不多說了,都明白。直接從基本的儲存過和開始講起。1.建立儲存過程 create schema name.procedure name number varying default out put n with n procedure option可以有recompile enc...