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

Chương 4 -Giáo trình SQL server 2000

17 778 0
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 nội tại
Chuyên ngành Hệ quản trị CSDL (SQL Server)
Thể loại Giáo trình
Năm xuất bản 2000
Định dạng
Số trang 17
Dung lượng 277,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

Giáo trình SQL server 2000

Trang 1

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 1

Hệ quản trị CSDL SQL Server

CHƯƠNG 4: THỦ TỤC NỘI TẠI

Trang 2

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 2

Chương 4: Thủ tục nội tại

Nội dung

Khái niệm Tham số bên trong thủ tục nội tại Một số vấn đề khác trong thủ tục nội tại Giao tác (transaction)

Trang 3

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 3

4.1 Khái niệm

Thủ tục nội tại (store procedure) là một tập hợp chứa các dòng lệnh, các biến, các cấu trúc dùng để thực hiện một hành động nào đó

Nội dung của thủ tục nội tại sẽ được lưu trữ tại CSDL của MS SQL SERVER

Phạm vi hoạt động của thủ tục nội tại do người dùng tạo ra chỉ có tính cục bộ bên trong một CSDL mà nó lưu trữ

Các NNLT khác có thể gọi thủ tục nội tại một cách dễ dàng

Thực thi nhanh vì nội dung bên trong thủ tục đã được phân tích cú pháp khi chúng được tạo mới

Trang 4

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 4 4.1.1 Tạo mới thủ tục nội tại

Các bước thực hiện

Trang 5

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 5 4.1.1 Tạo mới thủ tục nội tại

Các bước thực hiện

Trang 6

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 6

4.1.1 Tạo mới thủ tục nội tại

Ngoài ra có thể tạo mới thủ tục nội tại bằng lệnh CREATE PROCEDURE

Cú pháp:

CREATE PROCEDURE Ten_Thu_Tuc

@tên_tham_số kiểu_dữ_liệu loại

AS [DECLARE Bien_cuc_bo]

Các_lệnh

Trang 7

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 7

4.1.1 Tạo mới thủ tục nội tại

Trong đó

Ten_thu_tuc: phải là duy nhất trong CSDL Bien_cuc_bo: là các biến được sử dụng tính toán tạm thời

Các_lệnh: Là các lệnh thực hiện Loại:

• input (không cần ghi)

• output

Trang 8

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 8

4.1.1 Tạo mới thủ tục nội tại

Ví dụ:

CREATE PROCEDURE sp_tblTong AS

DECLARE @ten VARCHAR(30),

@sl INT SELECT @ten = TenHang,

@sl = SoLuong FROM tblTong

WHERE (SoLuong=(Select MAX(SoLuong) From tblTong)) PRINT @ten + ' co doanh so ban cao nhat!'

PRINT 'Voi so luong: ' + CAST(@sl AS VARCHAR(10))

Trang 9

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 9

4.1.2 Gọi thực hiện thủ tục nội tại

Chúng ta chỉ có thể thực hiện thủ tục nội tại EXECUTE trong tiện ích Query Analyzer, hay trong NNLT.

Cú pháp:

EXEC[UTE] Ten_thu_tuc giá_trị | @biến [output]

Ví dụ

EXECUTE sp_tblTong Hoặc:

Trang 10

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 10

4.1.3 Hủy bỏ thủ tục nội tại

Khi không cần sử dụng nữa thì chúng ta có thể hủy bỏ nó ra khỏi CSDL.

Dùng lệnh

DROP PROCEDURE Ten_thu_tuc

Ví dụ:

DROP PROCEDURE sp_tblTong

Trang 11

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 11

4.1.4 Ví dụ

Viết thủ tục xóa các sinh viên theo thành phố trong bảng

sinhvien (masv char(5), tp char(5)) create procedure xoasinhvien

@tp char(5) as

begin

delete from sinhvien where tp = @tp end

Gọi thủ tục

exec xoasinhvien ‘HCM’

Trang 12

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 12

4.1.4 Ví dụ

Viết thủ tục đếm xem có bao nhiêu sinh viên theo thành phố.

create procedure dem @tp char(5), @t int output as

begin select @t = count(*) from sinhvien where tp = @tp

end

declare @tong int exec dem ‘HCM’ , @tong output print @tong

Trang 13

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 13

4.1.4 Ví dụ

Bài tập: Viết hàm sinh ra mã cán bộ tự động theo quy tắc:

Mã cán bộ có dạng: CB0001

‘CB’ : quy định (luôn có)

0001 : là số VD:

• Hiện tại Cán bộ có mã cao nhất là CB0024

• Thì sinh mã mới là CB0025

Trang 14

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 14

4.1.4 Ví dụ

Bài tập:

Create procedure sinhkhoa @s char(10) output as

begin

declare @max int select

@max = max(cast(substring(MCB,3,4)

as int)) + 1 from tblcanbo set @s = '0000' + rtrim(cast(@max as char(4)))

set @s = 'CB' + right(@s,4) end

Trang 15

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 15

4.2 Sử dụng RETURN trong thủ tục

Thông thường sử dụng lệnh RETURN để thoát khỏi thủ tục trong trường hợp dữ liệu không hợp lệ.

Ngoài ra RETURN cho phép trả về 1 số nguyên tại nơi đã gọi thủ tục, khi đó thủ tục trả về giá trị số nguyên, giúp thủ tục có tính năng như 1 hàm.

Cú pháp

RETURN [so_nguyen]

Nếu chỉ sử dụng RETURN thì sẽ trả về 0

Trang 16

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 16

4.3 Thủ tục cập nhật bảng dữ liệu

Thủ tục dạng này sẽ được gọi thực hiện và truyền các giá trị cho tham số từ bên trong một môi trường khác (các NNLT).

CREATE PROCEDURE sp_vattu_them

@sMaVT CHAR(4),

@sTenVT NVARCHAR(50),

AS BEGIN

INSERT INTO VATTU(MAVT,TenVT, DVT, PhanTram) VALUES (@sMaVT, @sTenVT, @sDVT, @nPhanTram) END

Trang 17

ctsdhv@yahoo.com SQL SERVER, 1st Edition Chapter 4 Slide 17

4.3 Thủ tục cập nhật bảng dữ liệu

Gọi thủ tục

EXEC sp_vattu_them 'TV001','Ti vi 29 inch Sam sung','Bộ',15

Nếu dữ liệu là xâu Unicode: thêm chữ N

EXEC sp_vattu_them 'TV002',N'Tủ lạnh',N'Chiếc',15

Bài tập

Xem đoạn kiểm tra dữ liệu nhập vào trong tài liệu

Ngày đăng: 18/02/2014, 19:08

w