MS-SQL預存程序( Stores Procedures)

Stores Procedures

預存程序種類

 

系統預存程序(System Stored procedure)

„ 儲存在master系統資料庫中,透過系統預存程序可執行SQL Server內部的許多管理或系統相關的資訊。(名稱皆以sp_開頭,如:sp_dboption、sp_help…)
 

„ 延伸預存程序(Extended Store Procedure)

„ 讓使用者可用其它的程式語言(如:C/C++)來撰寫一些用T-SQL程式敘述無法達成的作業。必須存放在master系統資料庫中的【延伸預存程序】項目中,它的名稱通常是以xp_開頭來命名(如:xp_sendmail),„要執行xp_開頭的延伸預存程序時,必須以三部份名稱(如:master.. xp_dsninfo)來呼叫。

„ 使用者自訂預存程序(User-defined store procedure)

„ 使用者可以自已設計預存程序,如同程式的程序一般,並賦予一個名稱
 
**** 有輸入參數 ****
USE 北風出版社
GO
CREATE PROCEDURE usp_update_overtime
(@M員工編號 int,
@M加班時數 int)
AS UPDATE 學貫工作坊
SET   加班時數 = @M加班時數
WHERE  ( 員工編號 = @M員工編號 )
GO

--執行預存程序,以調整員工編號2的加班時數為18。
EXEC usp_update_overtime 2,18
**** 有輸出參數 ****
USE 北風出版社
GO
CREATE PROCEDURE usp_statistics_salary
(@M書籍分類 int,
@M平均價格 money OUTPUT,
@M最高價格 money OUTPUT)
AS
SELECT @M平均價格=AVG(價格), @M最高價格= MAX(價格) 
FROM 書籍
WHERE 分類代號 = @M書籍分類
GO
-- 執行預存程序
DECLARE @MKIND int
DECLARE @MAVG money
DECLARE @MMAX money
SET @MKIND = 3
EXEC  usp_statistics_salary @MKIND ,  @MAVG  OUTPUT ,  @MMAX  OUTPUT
PRINT '書籍分類: ' + CONVERT( varchar , @MKIND)
PRINT '平均價格:'  + CONVERT( varchar , @MAVG)
PRINT '最高價格:' + CONVERT( varchar , @MMAX)