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)