管理儲存過程
儲存過程的概念
將一些固定的操作集中起來由SQL伺服器來完成。類似批處理
儲存過程是SQL語句和可選控制流程語句的預編譯集合。是一種封裝
重複任務操作的方法。以一個名稱儲存,作為一個單元處理
儲存過程可以接受和輸出引數,返回執行儲存過程的狀態值
分類:系統儲存過程(SP_為字首)和使用者自定義儲存過程
優點:儲存過程封裝事物規則
允許標準元件式程式設計
能夠實現較快的執行速度
能夠減少網路流量--傳送只是呼叫語句
可以被作為一種安全機制來充分利用
建立儲存過程的規則
名字必須符合SQL server 命名規則
引用物件必須在建立儲存過程前就存在
最多能有255個引數
不能在單個儲存過程中建立後渠道或在建立同名的物件
可以引用臨時表
不能有Sql 建立語句
文字不能超過64K位元組 因為程式碼放在syscomments。 名字放在sysObject表中
使用企業管理器和Transaction-SQL管理儲存過程
儲存過程的3個組成部分
--所有的輸入引數以及傳給呼叫者的輸出引數
--被執行的針對資料庫的操作語句,包括呼叫其他儲存過程的語句
--返回撥用者的狀態值,以指明呼叫是否成功
建立儲存過程
create procedure procedure_name
@parameter data_type
varying default output
with
recompile|encryption|recompile,encryption
for replication
as sql_statement
-----------------------------
if exists(select name from sysobjects where name='pinfo50000' and type='P')
drop procedure pinfo50000
GO
create procedure pinfo50000
As select *from project where 專案標的>=50000
order by 專案標的 desc
go
exec pinfo50000
go
執行儲存過程
execute @return_status=
procedure_name
@patameter=value|@variable|output|default
with recompile --指定實際儲存過程時重新編譯執行計劃
Use company
if exists(select name from sysobjects where name='GetAvgPbliaodi'and type='P')
drop procedure GetAvgPbiaodi
go
查詢某員工所負責專案的平均專案標的
create procedure GetAvgPbiaodi
@name varchar(10),@avgpbiaodi int output
as Declare @ErrorSave int
Set @ErrorSave=0
Select @avgpbiaodi=AVG(專案標的)
from prohect as p inner join pmanager as pm
on p.負責人ID=pm.負責人ID
where pm.姓名=@name
if(@@Error<>0)
set @ErrorSave=@@Error
return @ErrorSave
go
執行儲存過程
Declare @returnvalue int,@avg int
exec @returnvalue=GetAvgPbiaodi'張傑',@avg output
print'返回值='+cast(@returnvalue as char(2))
print '平均'+cast(@avg as char(10))
-------------------
檢視儲存過程的定義
sp_helptext procedureName
檢視儲存過程的相關性
exec sp_depends procedureName
重新命名儲存過程
EXEC sp_rename oldProcedureName,newProcedure
修改儲存過程
alter procedure procedureName
刪除儲存過程
drop procedure procedureName
建立一組儲存過程
Create prc group_sp;1
as select*from authors
go
Create prc group_sp;2
as select au_lname from authors
go
Create prc group_sp;3
as select distinct city from authors
go
exec group_sp;3
刪除組
drop procedure dbo.group_sp
在儲存過程中使用引數
按位置傳入
create procedure scores
@score1 smallint,@score2 smallint,
@score3 smallint,@score4 smallint,
@score5 smallint,@myAvg smalint output
as select
@myAvg=(@score1+@score2+@score3+@score4+@score5)/5
執行
declare @AvgScore smallint
exec scores 10,5,6,4,6@AvgScore OutPut
select 'is:',@AvgScore
go
按引用轉引數
return將資訊返回給呼叫過程
create proc MyReturn
@t1 smallint,@t2 smallint,@retval smallint
as select @retval=@t1+@t2
return @retval
呼叫
declare @muReturnValue smallint
Exec @muReturnValue=myReturn 9,9,0
Select'this return value is',@muReturnValue
With Recompile
可以在Create Procedure 語句或EXEC procedure
語句後增加With recompile
在Create Procedure 後使用、將不被Catch每次執行重新編譯
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-608510/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MYSQL儲存過程管理MySql儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Oracle儲存過程Oracle儲存過程
- 使用儲存過程儲存過程
- sybase儲存過程儲存過程
- java儲存過程Java儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- 實戰儲存過程排程過程儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- 把自編儲存過程設定為系統儲存過程儲存過程
- 儲存過程 傳 datatable儲存過程
- 儲存過程——遊標儲存過程
- Oracle儲存過程-1Oracle儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- Winform呼叫儲存過程ORM儲存過程
- oracle的儲存過程Oracle儲存過程
- SER SERVER儲存過程Server儲存過程
- MySQL之儲存過程MySql儲存過程
- [MYSQL -23儲存過程]MySql儲存過程
- SQL儲存過程示例SQL儲存過程
- Oracle儲存過程例子Oracle儲存過程
- SQL Server 儲存過程SQLServer儲存過程
- 儲存過程 函式儲存過程函式
- 【SQL Server】--儲存過程SQLServer儲存過程
- 修改的儲存過程儲存過程
- Oracle建立儲存過程Oracle儲存過程
- perl呼叫儲存過程儲存過程