bài giảng cơ sở dữ liệu quan hệ và sql- chương 9: ngữ thủ tục- ps/sql - cđ cntt hữu nghị việt hàn

79 424 0
bài giảng cơ sở dữ liệu quan hệ và sql- chương 9: ngữ thủ tục- ps/sql - cđ cntt hữu nghị việt hàn

Đ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

Chương NGÔN NGỮ THỦ TỤC PL/SQL - Lý thuyết: tiết - Thực hành: tiết Chương Ngôn ngữ thủ tục –PL/SQL 9-1 NGÔN NGỮ THỦ TỤC – PL/SQL 9.1 Giới thiệu PL/SQL 9.2 Con trỏ (Cursor) 9.3 Thủ tục hàm 9.4 Quản lý đối tượng lớn Chương Ngôn ngữ thủ tục –PL/SQL 9-2 Giới thiệu PL/SQL - Mở rộng SQL - Mã PL/SQL lưu trữ trực tiếp csdl - Giao tiếp với csdl  cho phép tích hợp lệnh SQL ngơn ngữ lập trình  sử dụng sở liệu và lập trình ứng dụng  dùng để kết hợp lệnh xử lý chuyển tác  hỗ trợ nhiều thủ tục SQL  đơn vị mã lệnh PL/SQL dạng khối (Begin… End) Chương Ngôn ngữ thủ tục –PL/SQL 9-3 Giới thiệu PL/SQL Khai báo biến Identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr] Ví dụ: V_Hiredate DATE; V_DeptNo NUMBER(3) NOT NULL := 10; V_Loc VARCHAR2(13) := ‘Atlanta’; Chương Ngôn ngữ thủ tục –PL/SQL 9-4 Giới thiệu PL/SQL - Khai báo khối [DECLARE Khai báo biến, trỏ,…] BEGIN - Lệnh SQL; - Lệnh PL/SQL; [EXCEPTION Xử lý ngoại lệ xảy ra;] END; Chương Ngôn ngữ thủ tục –PL/SQL 9-5 Giới thiệu PL/SQL Ví dụ: DECLARE v VARCHAR2(5); BEGIN SELECT Ename INTO v FROM Emp; EXCEPTION WHEN others THEN Message(SQLERRM); END; Chương Ngơn ngữ thủ tục –PL/SQL 9-6 Giới thiệu PL/SQL Ví dụ: Lấy dữ liệu cột DeptId và cột Loc phòng SALES bảng Dept đưa vào hai biến v_deptno và v_loc Nếu có lỗi xuất thì xuất dịng thơng báo mã lỗi hình Chương Ngơn ngữ thủ tục –PL/SQL 9-7 Giới thiệu PL/SQL DECLARE v_deptno NUMBER(2); v_loc VARCHAR2(15); BEGIN SELECT DeptId, Loc INTO v_deptno, v_loc FROM Dept WHERE Dname = 'SALES'; EXCEPTION WHEN others THEN Message(SQLERRM); END; Chương Ngôn ngữ thủ tục –PL/SQL 9-8 Giới thiệu PL/SQL Thuộc tính %Type - %Type sử dụng lưu trư˜ giá trị nhận từ bảng - đặt %Type sau tên bảng và tên cột identifier Table.column%Type; Ví dụ: DECLARE v_deptno Dept.DeptNo%Type; v_loc VARCHAR2(15); v_name Dept.Dname%Type; Chương Ngôn ngữ thủ tục –PL/SQL 9-9 Giới thiệu PL/SQL - Một số chú ý  PL/SQL không hỗ trợ kiểu liệu mảng  Biến phải khái báo trước tham chiếu đến  Kiểu liệu phần khai báo có không  Trong khối lệnh biến không trùng tên Tên biến không trùng với tên cột bảng dư˜ liệu sử dụng khối   Khởi tạo biến phải rõ NOT NULL, CONSTANT  Khai báo biến hàng Khởi tạo giá trị cho biến cách sử dụng phép gán (:=) từ khóa DEFAULT  Chương Ngơn ngữ thủ tục –PL/SQL - 10 Thủ tục Sau tạo thủ tục, sử dụng thủ tục chương trình Ví dụ: Gọi thực thủ tục change_sal với p_Percentage=15 Change_sal(15, v_err); Chương Ngôn ngữ thủ tục –PL/SQL - 65 Thủ tục - Huỷ bỏ thủ tục DROP PROCEDURE procedure_name; Ví dụ: DROP PROCEDURE change_sal; Chương Ngôn ngữ thủ tục –PL/SQL - 66 Hàm trả giá trị lời gọi - Tạo hàm CREATE [OR REPLACE] FUNCTION func_name [(argument1 [mode1] datatype1, argument2 [mode2] datatype2, )] RETURN datatype IS | AS BEGIN PL/SQL Block; END; Chương Ngôn ngữ thủ tục –PL/SQL - 67 Hàm Ví dụ: CREATE FUNCTION get_sal (p_Empid IN number) RETURN Number IS BEGIN SELECT sal FROM emp WHERE emp_id = p_Empid; RETURN null; EXCEPTION WHEN others THEN RETURN ‘Lỗi: ‘ || SQLERRM; END; Chương Ngôn ngữ thủ tục –PL/SQL - 68 Hàm - Gọi hàm Ví dụ: DECLARE v_Sal number; BEGIN v_SAL := get_sal(7934); PRINT v_Sal; END; Chương Ngôn ngữ thủ tục –PL/SQL - 69 Hàm - Huỷ bỏ hàm DROP FUNCTION function_name; Ví dụ: DROP FUNCTION get_sal; Chương Ngôn ngữ thủ tục –PL/SQL - 70 Hàm - Lợi ích việc sử dụng hàm thực thao tác phức tạp mệnh đề câu lệnh SQL   phân tích xử lý liệu thực Server  gọi hàm câu lệnh SQL sử dụng hàm để thao tác kiểu liệu tự tạo   cho phép thực đồng thời câu lệnh truy vấn Chương Ngôn ngữ thủ tục –PL/SQL - 71 Hàm - Hạn chế sử dụng hàm  Phải định nghĩa hàm trước sử dụng áp dụng cho điều kiện WHERE, áp dụng cho điều kiện HAVING  Chỉ Tham số sử dụng hàm loại IN, không chấp nhận giá trị OUT hay giá trị IN OUT  Kiểu liệu trả hàm phải kiểu liệu DATE, NUMBER, NUMBER  Không cho phép hàm trả kiểu liệu BOOLEAN, RECORD, TABLE Kiểu liệu trả phải tương thích với kiểu liệu bên Oracle Server  Chương Ngôn ngữ thủ tục –PL/SQL - 72 9.3.5 Phát triển gói (Package) - Tập kiểu liệu, biến, thủ tục hàm có mối liên hệ với nhau, gộp chung lại  Tăng tính phân nhỏ thành phần (Modularity)  Đơn giản việc thiết kế ứng dụng  Ẩn dấu thông tin (hiding information)  Nâng cao hiệu suất sử dụng  Thực chồng (overloading) (Xem giáo trình) Chương Ngơn ngữ thủ tục –PL/SQL - 73 9.3.6 Phát triển Triggers - Trigger thủ tục thực ngầm định thực lệnh SQL đảm bảo thực tất thao tác có liên quan tới lệnh can thiệp liệu thực   sử dụng trigger thao tác trọng tâm không sử dụng trigger để thực ràng buộc sẵn có sở liệu Oracle  Chương Ngôn ngữ thủ tục –PL/SQL - 74 9.3.6 Phát triển Triggers - Tạo TRIGGER Khi tạo trigger, cần lưu ý tới số tiêu chí sau:  Thời gian thực hiện: BEFORE, AFTER  Hành động thực hiện: INSERT, UPDATE, DELETE  Đối tượng tác động: bảng liệu  Loại trigger thực hiện: dòng lệnh hay câu lệnh  Mệnh đề điều kiện thực  Nội dung trigger Chương Ngôn ngữ thủ tục –PL/SQL - 75 9.3.6 Phát triển Triggers - Phân loại trigger + Phân loại theo thời gian BEFORE trigger: kích hoạt trước thực câu lệnh(INSERT UPDATE)  AFTER trigger: kích hoạt sau lệnh thực xong  INSTEAD OF trigger: cho phép người sử dụng thay đổi cách suốt liệu số khung nhìn mà khơng thể thực thay đổi trực tiếp  Chương Ngôn ngữ thủ tục –PL/SQL - 76 9.3.6 Phát triển Triggers - Phân loại trigger + Phân loại theo câu lệnh kích hoạt (INSERT, UPDATE, DELETE) + phân loại theo số lần kích hoạt  Mức lệnh: kích hoạt thực câu lệnh Mức dòng liệu: kích nhiều lần ứng với dịng liệu chịu ảnh hưởng thao tác thực lênh  Chương Ngôn ngữ thủ tục –PL/SQL - 77 9.3.6 Phát triển Triggers - Tạo trigger mức câu lệnh CREATE [OR REPLACE] TRIGGER name timing event1 [OR event2 OR event3] ON table Trigger_body Chương Ngôn ngữ thủ tục –PL/SQL - 78 9.3.6 Phát triển Triggers - Tạo trigger mức câu lệnh Ví dụ: Tạo trigger để giới hạn liệu chèn vào bảng Emp CREATE OR REPLACE TRIGER secure_emp BEFORE INSERT ON Emp BEGIN IF TO_CHAR(sysdate,’DAY’) IN (‘SAT’,’SUN’) OR TO_CHAR(sysdate,’HH24’) NOT BETWEEN ‘08’ AND ’18’ THEN RAISE_APPLICATION_ERROR (-20500, ’Invalid Time.’); END IF; END; Chương Ngôn ngữ thủ tục –PL/SQL - 79 ... END; Chương Ngôn ngữ thủ tục –PL/SQL - 25 Giới thiệu PL/SQL - Kiểu liệu hợp Kiểu liệu Table Kiểu liệu Record Thuộc tính %ROWTYPE Chương Ngơn ngữ thủ tục –PL/SQL - 26 Giới thiệu PL/SQL - Kiểu liệu. .. V_dept.Dname:=‘CAMARON’; Chương Ngơn ngữ thủ tục –PL/SQL - 32 Con trỏ - Tổng quan trỏ (Cursor) - Nâng cao trỏ Chương Ngôn ngữ thủ tục –PL/SQL - 33 Tổng quan trỏ - Kiểu biến có cấu trúc chứa lệnh SQL xử lý - Mỗi... LOOP; Chương Ngôn ngữ thủ tục –PL/SQL - 22 Giới thiệu PL/SQL - Lệnh lặp FOR FOR counter IN [REVERSE] from … to LOOP statements; END LOOP; Ví dụ: Chèn thêm hàng vào bảng Locations Chương Ngôn ngữ thủ

Ngày đăng: 02/07/2014, 17:44

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan