1. Trang chủ
  2. » Công Nghệ Thông Tin

Stored procedure

32 241 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 181 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu Store procedure SP là một tập các câu lệnh SQL chương trình được biên dịch và lưu trữ sẵn trên SQL Server  SP cho phép - Chứa nhiều câu lệnh, có thể gọi các SP khác - Nhận c

Trang 1

STORED PROCEDURE

Trang 3

Giới thiệu

Store procedure (SP) là một tập các câu lệnh SQL (chương trình) được biên dịch và lưu trữ sẵn trên SQL Server

SP cho phép

- Chứa nhiều câu lệnh, có thể gọi các SP khác

- Nhận các tham số đầu vào, đầu ra

- Trả về trạng thái thực hiện (thành công hay thất bại) và nguyên nhân

Trang 4

Giới thiệu (tt)

Quá trình tạo SP

- Phân tích cú pháp:

Nếu có lỗi cú pháp thì thông báo lỗi và không tạo SP

Ngược lại tạo SP, tên SP lưu ở sysobjects , văn bản lệnh lưu ở

syscomments

Thi hành SP (lần đầu hoặc biên dịch lại)

- Đọc văn bản lệnh ở syscomments

- Phân giải tên : liên kết các đối tượng mà SP tham khảo đến

- Tối ưu hóa : tạo kế hoạch thi hành nhanh nhất dựa vào trạng thái của CSDL và cấu trúc câu lệnh

- Biên dịch : tạo mã thi hành cho kế hoạch đã được tối ưu hóa và đặt trong vùng procedure cache

- Thi hành SP

Trang 5

Giới thiệu (tt)

Ưu điểm khi sử dụng SP

- Cho phép các ứng dụng khác nhau dùng chung xử

lý, đảm bảo tính nhất quán trong truy xuất và xử lý

dữ liệu

- Nhanh, giảm lưu lượng mạng

Trang 7

Biến cục bộ: là một đối tượng cụ thể lưu giữ một giá trị

dữ liệu đơn của một kiểu xác định.

- Tên của biến cục bộ được bắt đầu bởi ký hiệu @

- Biến cục bộ được khai báo bằng lệnh DECLARE

- Ví dụ

DECLARE @sl int, @dbname nvarchar(128)

- Biến cục bộ không thể có kiểu dữ liệu là text , ntext

hoặc image

Biến toàn cục (hệ thống): do SQL tạo ra

- Tên bắt đầu bởi ký hiệu @@

- Ví dụ: @@rowcount , @@error

Trang 9

<Cau_lenh_SQL |BEGIN < Khoi_lenh lệnh> END >]

SELECT * FROM NHANVIEN

Trang 11

[ ELSE <Ket_qua_khac>]

END

SELECT Thu = CASE datepart (w, getdate ()) WHEN 1 THEN 'Chu nhat’ WHEN 2 THEN 'Thu hai'

WHEN 3 THEN 'Thu ba’ WHEN 4 THEN 'Thu tu'

WHEN 5 THEN 'Thu nam’ WHEN 6 THEN 'Thu sau'

WHEN 7 THEN 'Thu bay'

END

Trang 13

Lệnh WHILE

Cú pháp

Ví dụ

WHILE <Bieu_thuc_Logic>

<Cau_lenh_SQL | BEGIN <Khoi_lenh> END > [BREAK ]

<Cau_lenh_SQL |BEGIN <Khoi_lenh> END >[ CONTINUE ]

<Cau_lenh_SQL |BEGIN <Khoi_lenh> END >

SET @Dem = 0

BEGIN SET @Dem = @Dem + 1

Trang 15

Một số lệnh thông dụng

RETURN [Bieu_thuc_nguyen]

- Dùng để thoát khỏi SP

- Ví dụ

PRINT <Chuoi | @Bien>

- Dùng để xuất kết quả, giá trị ra màn hình

- Ví dụ

PRINT ‘ABC’ PRINT @Dem PRINT GETDATE ()

Trang 17

Nội dung chi tiết

Trang 18

Trong SP không được chứa các câu lệnh : CREATE PROCEDURE, CREATE RULE, CREATE VIEW, CREATE TRIGGER

Để thi hành lệnh CREATE PROCEDURE, người dùng phải

là thành viên của một trong các role: sysadmin, db_owner, db_ddladmin hoặc được cấp quyền CREATE PROCEDURE

Trang 19

Tạo SP (tt)

Cú pháp

CREATE PROC [ EDURE ] <Ten_Procedure>

[ @<Tham_so> <Kieu_du_lieu> [ = <Gia_tri_mac_dinh> ] [ OUTPUT ] ] [ , n ]

[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

AS

<Cac_cau_lenh_SQL>

Trang 20

Tạo SP (tt)

Giải thích

- Ten_Procedure : tên procedure, các SP tạm cục bộ

có ký hiệu # trước tên của SP

- @<Tham_so> : tên tham số của procedure

- <Kieu_du_lieu> : kiểu dữ liệu của tham số

- <Gia_tri_mac_dinh> : giá trị mặc định của tham số

- OUTPUT : cho phép tham số nhận giá trị trả về

- RECOMPILE : nếu có thêm tùy chọn này thì mỗi lần thi hành SQL Server sẽ biên dịch lại SP và mã của

SP không được lưu vào vùng đệm của thủ tục

- ENCRYPTION : nếu có thêm tùy chọn này thì văn bản lệnh được mã hóa và lưu trong syscomments

Trang 21

SELECT * FROM nhanvien

EXEC [ UTE ] <Ten_Procedure> [Danh_sach_tham_so]

Trang 23

Hiệu chỉnh SP

Cú pháp

Ví dụ

ALTER PROC [ EDURE ] <Ten_Procedure>

[ @<Tham_so> <Kieu_du_lieu> [ = <Gia_tri_mac_dinh> ] [ OUTPUT ] ] [ , n ]

[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

Trang 25

Xóa SP

Cú pháp

Ví dụ

DROP PROC [ EDURE ] <Ten_Procedure>

DROP PROC DS_NHANVIEN

Trang 27

Xem thông tin về SP

sp_help <Ten_procedure> Danh sách các tham số cùng kiểu dữ liệu

sp_helptext <Ten_procedure> Văn bản lệnh của SP trong trường hợp không mã hóa

sp_depends <Ten_procedure> Liệt kê các đối tượng mà SP tham khảo đến và các đối

tượng tham khảo đến SP

sp_stored_procedures Danh sách các SP trong DB hiện hành

Trang 29

Ví dụ 1 – có tham số vào, default

Xem danh sách nhân viên theo phòng

Trang 30

Ví dụ 2 – có tham số vào, ra

- DECLARE @SoNVXoa int

OUTPUT

- PRINT 'So mau tin bi xoa:' + str (@SoNVXoa,3)

CREATE PROC XOA_THANNHAN_THEOMANV

@MANV nvarchar(20 ), @SoNVXoa int OUTPUT

AS

DELETE THANNHAN

WHERE MA_NVIEN = @MaNV

SET @SoNVXoa = @@rowcount

Trang 31

Ví dụ 3 – có recompile , encryption

Tăng lương cho nhân viên theo phòng lên @Tyle lần

CREATE PROC TANGLUONG_NHANVIEN

@Phong int , @Tyle Decimal(3,1 ), @So_NV_Tang int OUTPUT

WITH RECOMPILE, ENCRYPTION

Trang 32

Ví dụ 4 – có chặn lỗi

Thêm phòng ban

CREATE PROC THEM_PHONGBAN @TENPHG NVARCHAR (40),

@MAPHG INT , @TRPHG NVARCHAR (20),

@NG_NHANCHUC SMALLDATETIME , @Loi int OUTPUT AS

BEGIN TRY

INSERT PHONGBAN VALUES (@TENPHG, @MAPHG, @TRPHG, @NG_NHANCHUC) END TRY

BEGIN CATCH

SET @Loi = @@error

RAISERROR ( 'Loi them du lieu', 10,1) RETURN

END CATCH

SET @Loi = @@error

Ngày đăng: 03/12/2015, 07:45

Xem thêm

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm