1. Trang chủ
  2. » Giáo án - Bài giảng

Bài 8 thủ tục (SP) và xử lý lỗi trong SP

21 1,5K 2
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thủ Tục (Stored Procedure)
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Giảng
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 168,5 KB

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

Nội dung

Bài 8: Thủ tục Stored Procedure • Tìm hiểu về thủ tục trong SQL • Cú pháp tạo, sửa, xóa thủ tục • Ý nghĩa các tham số EXECUTE AS... Tìm hiểu về Stored Procedure SP• Khái niệm: Stored Pro

Trang 1

Bài 8: Thủ tục (Stored Procedure)

• Tìm hiểu về thủ tục trong SQL

• Cú pháp tạo, sửa, xóa thủ tục

• Ý nghĩa các tham số EXECUTE AS

Trang 2

1 Tìm hiểu về Stored Procedure (SP)

• Khái niệm: Stored Procedure là một đối tượng trong SQL Server, gồm một nhóm câu lệnh Transact-SQL đã được compiled (biên

dịch), được xử lý như một đơn vị

• Bắt đầu được bổ sung từ SQL 2000

Trang 3

Ưu điểm của SP

- Hiệu quả (Performance): SP được biên dịch (compile) và lưu trữ

ngay trong database server Do đó:

+ Không cần kiểm tra quyền (permission) của các câu lệnh đơn lẻ

+ Không cần kiểm tra lại cú pháp và tạo kế hoạch thực thi

+ Giảm lưu lượng mạng: Không cần gửi nhiều câu lệnh SQL dài dòng, chỉ cần gửi tên SP và nhận kết quả trả về

- Lập trình (Programming Framework)

+ Dễ bảo trì

- Bảo mật (Security )

+ Che dữ liệu của bảng

+ SP có thể được mã hóa (encrypt ) để tăng tính bảo mật

3

Trang 5

Các loại Stored Procedure

• System Stored Prcedure

+ Chứa trong master DB

+ SQL cung cấp hàng nghìn SP hệ thống Chủ yếu dùng trong việc

quản lý database (administration) và security

+ Liệt kê các sp hệ thống trong CSDL master

select * from sysobjects where xtype ='P'+ Ví dụ thủ tục sp_addtype dùng để tạo kiểu dữ liệu mới

• Local Stored Procedure

+ Được viết bởi DBA hoặc Programmer

+ Lưu trong User Database

5

Trang 6

Các loại Stored Procedure

• Temporary Stored Procedure

+ Được lưu trong TemDB

+ Sẽ bị xóa khi connection tạo ra chúng bị đóng hoặc SQL Server

Shutdown

• Extended Stored Procedure

+ Là một loại stored procedure của một chương trình ngoại vi (external program) có thể viết bởi C, C++, được biên dịch thành một DLL

+ Lời gọi thủ tục này có cú pháp giống gọi SP của SQL

+ Thường bắt đầu bằng xp_

• Remote Stored Procedure

+ Là các stored procedure gọi stored procedure ở server khác

+ Ví dụ: sp_who @loginame=’DomainNameAdministrators’

Trang 7

Khai báo thủ tục

Cú pháp:

CREATE PROC [ EDURE ] [ schema ]procedure_name

[ {@parameter data_type } [= default] [ OUTPUT ] ]

Trang 8

- @return_status = giá trị trả về của SP Nếu hàm không có giá trị trả về

@return_status = 0 (Thủ tục thực thi không lỗi).

Trang 10

VD: Tìm số lớn nhất trong 3 số a,b,c

Use Test

CREATE PROCEDURE dbo.MaxABC

@a real=1, @b real=9, @c real=10, @max real output

declare @max real,@return_status real

exec @return_status = dbo.maxabc 100, default, default, @max output

print @max

print @return_status

Trang 13

Thủ tục phân trang các bản ghiCREATE PROCEDURE sp_PagedItems ( @Page int, @RecsPerPage int)

AS

CREATE TABLE #TempItems (ID int IDENTITY, Name varchar(50), Price money) INSERT INTO #TempItems (Name, Price)

SELECT Name, listPrice

FROM Adventureworks.Production.Product ORDER BY listPrice

DECLARE @FirstRec int, @LastRec int

SET @FirstRec = (@Page - 1) * @RecsPerPage +1

SET @LastRec = (@Page * @RecsPerPage )

SELECT *, MoreRecords =( SELECT COUNT(*)

FROM #TempItems TI WHERE TI.ID > @LastRec) FROM #TempItems WHERE ID >= @FirstRec AND ID <= @LastRec go

Exec sp_pagedItems 2, 10

Trang 14

SET @PageNumber = @PageNumber -1

SET @RowStart = @PageSize * @PageNumber + 1;

SET @RowEnd = @RowStart + @PageSize - 1;

With Cust AS ( SELECT CustomerID, CompanyName,

ROW_NUMBER() OVER (order by CompanyName) as

RowNumber FROM Customers )

Select * from Cust Where RowNumber >= @RowStart and

RowNumber <= @RowEnd

END

exec GetCustomersByPage 10, 1

Trang 17

IF NOT EXISTS (SELECT * FROM sys.objects WHERE

object_id = OBJECT_ID(N'[dbo].[AuditTable]') AND type in (N'U'))

CREATE TABLE [dbo].[AuditTable](

[UserName] [nchar](20) COLLATE Vietnamese_CI_AI NULL,

[DateTimeLogin] [datetime] NULL

) ON [PRIMARY]

INSERT INTO [AuditTable] values(user_name(),getdate())

exec sp_procoption N'StartUpProcAudit', N'startup', N'true'

Trang 18

Bài tập 1

Cho một xâu kí tự là một tập hợp các phần tử viết cách nhau bởi một dấu ‘.’

Mỗi phần tử gồm có bảy thành phần, các thành phần viết cách nhau một dấu ‘;’

Ví dụ:Mã Hóa Đơn, Người Nhập, Ghi Chú, Mã Sản Phẩm; Tên Sản Phẩm; Số lượng; Đơn giá.

- Viết thủ tục hoặc hàm phân tích xâu kí tự trên và lấy ra các hóa đơn sau đó Insert vào bảng NhapHangHoa (MaHD, NguoiNhap, GhiChu, MaSP, TenSP,

Soluong,DonGia)

Trang 19

Bài tập 2

- Cho một file dữ liệu Input.txt gồm các xâu kí tự như trong bài tập 1

- Giả sử có hai bảng: DMSanPham(MaSP, TenSP) và bảng NhapHangHoa

(MaHD, NguoiNhap, GhiChu, MaSP, Soluong, DonGia)

- Hãy viết thủ tục hoặc hàm phân tích từng xâu kí tự trong file:

- Nếu MaSP chưa có trong DMSanPham(MaSP, TenSP) thì ta chèn MaSP và TenSP vào bảng này.

- Chèn các giá trị MaHD, NguoiNhap, GhiChu, MaSP, SoLuong, DonGia lấy được từ xâu vào bảng NhapHangHoa.

Trang 20

Bài tập 3

- Cho một file dữ liệu Input.txt như trong bài tập 3

- Giả sử có ba bảng: DMSanPham(MaSP, TenSP), bảng NhapHangHoa (MaHD, NguoiNhap, GhiChu) và bảng NhapHangHoaChiTiet (MaHD, MaSP,

Soluong,DonGia)

- Hãy viết thủ tục hoặc hàm phân tích từng xâu kí tự trong file:

- Nếu MaSP chưa có trong DMSanPham(MaSP, TenSP) thì ta chèn MaSP và TenSP vào bảng này.

- Nếu MaHD chưa có trong bảng NhapHangHoa thì chèn giá trị MaHD,

NguoiNhap, GhiChu vào bảng này

- Chèn các giá trị MaHD,MaSP,SoLuong,DonGia vào bảng

NhapHangHoaChiTiet

Trang 21

So sánh hiệu năng vòng while

• declare @d1 decimal, @d2 decimal, @d3 decimal, @i int

Ngày đăng: 16/06/2014, 13:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w