Tải bản đầy đủ (.pdf) (8 trang)

Giới thiệu ngôn ngữ PL-SQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (286.4 KB, 8 trang )



Oracle cơ bản - SQL và PL/SQL

GRANT privilege[,privilege...] TO user [,user...]


Xoá quyền
REVOKE privilege[,privilege...] FROM user [,user...]


11.2.ROLE
Role là tên của một nhóm các quyền hạn. Nó được tạo để quản lý quyền hạn cho các ứng dụng hoặc nhóm
các User. Việc dùng role cho phép quản lý thống nhất trên các đối tượng, tăng tính mềm dẻo trong quản trị,
dễ dàng thay đổi. Ví dụ hai đối tượng X, Y có quyền trên role A tức là role A có quyền gì thì X, Y có quyền
tương ứng khi role A bị thay đổi quyền hạn thì X, Y cũng bị thay đổi quyền hạn theo.


Lệnh tạo Role
Cú pháp:
CREATE ROLE role [IDENTIFY BY password];


Gán privilege cho Role
Gán Role có các đối tượng
Một số Role hay dùng:
 CONNECT
 RESOURCE


Lệnh gán và xoá Role giống như lệnh gán và xoá Privilege. Chi tiết xem trong phần quản trị Oracle.




11.3.SYNONYM
Synonyms là bí danh cho mọi đối tượng của Oracle. Các đối tượng của Oracle là table, view, snapshot,
sequence, procedure, function, package và các synonym khác. Cú pháp
CREATE PUBLIC SYNONYM synonym_name
FROM [OWNER.]object_name;


Dùng Synonyms có những lợi điểm sau:
 Không tốn thêm nơi lưu trữ khác bởi vì nó đã được cất trên từ điển dữ liệu.  Làm
đơn giản đoạn chương trình SQL.
 Tăng tính bảo mật cho database.
 Có thể cho phép mọi người (public) truy xuất các đối tượng của Oracle.


Ví dụ: Chúng ta có một table EMPLY trong schema emp_01
Khi lập trình thì phải truy xuất theo emp_01. EMPLY, tên dài như vậy thì đoạn chương trình sẽ dài sẽ d
ễ lầm
lẫn. Nên chúng ta phải dùng synonym
CREATE SYNONYM EMP FOR EMP_01.EMPLY;



Trang 74
Quyển sách này được upload tại: hutonline.net


Oracle cơ bản - SQL và PL/SQL


Có thể tạo một synonym cho phép mọi người có thể tham khảo tới
CREATE PUBLIC EMP FOR EMP_01.EMPLY;


Tính bảo mật là vì synonym là bí danh, nên người sử dụng dùng bí danh này sẽ không đoán được thêm thông
tin gì.



























































Trang 75
Quyển sách này được upload tại: hutonline.net


Oracle cơ bản - SQL và PL/SQL

Chương 12. GIỚI THIỆU NGÔN NGỮ PL/SQL
12.1.TỔNG QUAN VỀ PL/SQL
12.1.1.
Cú pháp lệnh PL/SQL
 Mỗi lệnh SQL kềt thúc bằng dấu (;)
 Lệnh định nghĩa CSDL (DDL) không được sử dụng trong PL/SQL
 Lệnh SELECT trả về nhiều dòng có thể gây exception
 Lệnh DML có thể tác động trên nhiều dòng
Ví dụ:
x := 1;
INSERT INTO emp (id, name)
VALUES (50, ‘GARNOR’);
BEGIN
SELECT name FROM dept INTO :DEPT.NAME;
EXCEPTION
WHEN others THEN
Message(SQLERRM);
END;

UPDATE emp
SET sal := sal*1.2

WHERE dept_id = 10;


12.1.2.
Khối lệnh PL/SQL
Ngôn ngữ PL/SQL tổ chức các lệnh theo từng khối lệnh. Một khối lệnh PL/SQL cũng có thể có các khối
lệnh con khác ở trong nó.
Cấu trúc đầy đủ của một khối lệnh PL/SQL bao gồm:
DECLARE /* Phần khai báo - Không bắt buộc */
Khai báo các biến sử dụng trong phần thân
BEGIN /* Phần thân */
Đoạn lệnh thực hiện;
EXCEPTION /* Phần xử lý lỗi - Không bắt buộc */
Xử lý lỗi xảy ra;
END;


Ví dụ1:
DECLARE
empno NUMBER(4):=7788;
BEGIN
UPDATE emp
SET sal = 9000
WHERE empno = 0001;
END;


Ví dụ 2:
DECLARE
v_deptno NUMBER(2);

v_loc VARCHAR2(15);
BEGIN


Trang 76
Quyển sách này được upload tại: hutonline.net


Oracle cơ bản - SQL và PL/SQL
SELECT deptno, loc INTO v_deptno, v_loc

FROM dept
WHERE dname = 'SALES';
EXCEPTION
WHEN others THEN
Message(SQLERRM);
END;


12.2.LỆNH LẬP TRÌNH PL/SQL ĐƠN GIẢN
12.2.1.
Lệnh IF
Thực hiện câu lệnh theo điều kiện.
Cú pháp:
IF <điều kiện 1> THEN

Công việc 1;
[ELSIF <điều kiện 2> THEN

Công việc 2;

]


[ELSE
Công việc n + 1;
]
END IF;
Ví dụ 1:
IF ename = 'SCOTT' THEN
beam_me_up := 'YES';
COMMIT;
ELSE
beam_me_up := 'NO';
ROLLBACK;
END IF;


Ví dụ 2:
IF choice= 1 THEN
action := 'Run payroll';
ELSIF choice=2 THEN
action:='Run';
ELSIF choice=3 THEN
action:='Backup';
ELSE
action:='Invalid';
END IF;

Trang 77
Quyển sách này được upload tại: hutonline.net



Oracle cơ bản - SQL và PL/SQL

12.2.2.
Lệnh lặp LOOP không định trước
Trong lệnh lặp này, số lần lặp tuỳ thuộc vào điều kiện kết thúc vòng lặp và không xác định được ngay tại
thời điểm bắt đầu vòng lặp.
Cú pháp:
LOOP
Công việc;
EXIT WHEN điều kiện;
END LOOP;


Ví dụ:
x := 0;
y := 1000;
LOOP
x := x + 1;

y := y - x;
EXIT x > y;
END LOOP;


12.2.3.
Lệnh lặp LOOP có định trước
Ngay khi bắt đầu vòng lặp, ta đã xác định được số lần lặp. Cú pháp:
LOOP Index IN Cận dưới .. Cận trên


Công việc;
END LOOP;


Ví dụ:
x := 0;
LOOP Index IN 1 .. 100

x := x + 1;
END LOOP;

12.2.4.
Lệnh lặp WHILE
Cú pháp:
WHILE Điều kiện LOOP

Công việc;
END LOOP;
Ví dụ:
WHILE length(:Address) < 50 LOOP
:Address := :Address || ‘ ‘;
END LOOP;

12.2.5.
Lệnh GOTO, nhảy vô điều kiện
Cú pháp:
GOTO Nhãn;

Trang 78

Quyển sách này được upload tại: hutonline.net

×