Khi thực thi thủ tục, bạn phải cung cấp các giá trị của tham số của các thủ tục nếu cĩ. Một thủ tục cĩ thể được gọi thực thi hoặc tự động thực khi SQL Server khởi động. Gọi thực thi bằng từ khĩa EXECUTE.
Khi cần thêm một thàm số (parameter) hoặc thay đổi một vài phần trong đoạn mã thì ta dùng lệnh ALTER để hiệu chỉnh.
Xĩa một thủ tục dùng lệnh DROP
Các thủ tục cĩ thể được tạo trước khi các đối tượng mà thủ tục tham chiếu, đặt tính này gọi là tính trì hỗn.
Tạo thủ tục
Cách 1: Dùng Enterprice Manager
R-Click tại Store procudure trong CSDL, chọn New Store procudure
Cách 2: Tạo Stored procedure Wizard
Tool Wizard, click vào DataBase, chọn Create Store Procedure Wizard
Cách 3: Bằng lệnh Create proceduce
CREATE PROC [ EDURE ]procedure_name[ ;number] [ { @parameter data_type} [ VARYING ] [ =default] [ OUTPUT ]
] [,...n] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ] [ FOR REPLICATION ]
AS
sql_statement [ ...n]
[ VARYING ]: Chỉ dùng với biến Cursor
Ví dụ 1: Tạo thủ tục để liệt kê các order cĩ ngày giao hàng đã quá hạn theo yêu cầu
CREATE PROC dbo.overdueOrders – quá hạn AS
SELECT *
FROM dbo.orders
WHERE RequiredDate < GETDATE() and shippeddate is null
Kiểm tra sự tồn tại của Stored procedures
sp_helptext proc_name
Thực thi một Stored procedures
[ [ EXEC [ UTE ] ] {
[@return_status=]
{procedure_name[;number] |@procedure_name_var
}
[ [@parameter=] {value |@variable [ OUTPUT ] | [ DEFAULT ] ] [,...n]
[ WITH RECOMPILE ]
Đơn giản hơn
EXECUTE ProductName [ ;number][<parameter>[, …n][ OUTPUT ]]
Thực thi sp ngay khi SQL Server khởi động: Store procedure phải nằm ở CSDLMaster.
Cách 1:Dùng thủ tục Sp_procoptionđể gán thuộc tính tự động thực thi
USE Master
EXECute Sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] Startup
, [ @OptionValue = ] True
Ví dụ:
EXECute Sp_procoption dbo.overdueOrders Startup, True
Cách 2:DùngEnterprice Manager
R-Click tại tên thủ tục Properties Execute whenever SQL Server Start
Hiệu chỉnh một stored procedures
USE Northwind GO
ALTER PROC dbo.overdueOrders AS
SELECT CONVERT(CHAR(8), RequiredDate,1) RequiredDate, CONVERT(CHAR(8), orderDate,1) orderDate, orderId, Customerid, EmployeeID FROM dbo.orders
WHERE RequiredDate<GETDATE()and shippeddate is null
ORDER BY RequiredDate
Xĩa một stored procedures
DROP ProcedureName