Chương 3 trình bày những nội dung liên quan đến PL/SQL như: Sử dụng PL/SQL, các khái niện về PL/SQL, các quy tắc cơ bản lập trình PL/SQL, Sequence của Oracle, điều khiển có điều kiện, điều khiển lặp, các ngoại lệ,... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
08/02/2012 Chương PL/SQL Nội dung Sử dụng PL/SQL Các khái niện PL/SQL Các quy tắc lập trình PL/SQL Sequence Oracle Điều khiển có điều kiện Điều khiển lặp Các ngoại lệ Cursor 08/02/2012 Các khái niện PL/SQL Kiến trúc client/server Cấu trúc khối PL/SQL Kiến trúc PL/SQL client/server Client Ứng dụng sử dụng SQL Ứng dụng sử dụng PL/SQL Server Bộ xử lý phát triển SQL Bộ máy PL/SQL 08/02/2012 Sử dụng PL/SQL Cách 1: trực tiếp gõ vào SQLPlus begin dbms_output.put_line('Hello World!); end; / Sử dụng PL/SQL Cách 2: dùng notepad tạo e:\hello.sql begin dbms_output.put_line('Hello World!); end; / SQL>@:\hello.sql 08/02/2012 Sử dụng PL/SQL Cách 3: dùng tool SQLDeveloper Các khái niện PL/SQL Cấu trúc khối PL/SQL Thay đổi giá trị biến 08/02/2012 Cấu trúc khối PL/SQL DECLARE Các phát biểu khai báo BEGIN Các phát biểu thực thi EXCEPTION Các phát biểu xử lý ngoại lệ END; Phần khai báo Phần thực thi Phần ngoại lệ Ví dụ declare v_first_name varchar2(35); v_last_name varchar2(35); begin select first_name,last_name into v_first_name,v_last_name from student where student_id=123; dbms_output.put_line('Student name: '||v_first_name||' ‘ ||v_last_name); exception when no_data_found then dbms_output.put_line('there is no student with student 123'); end; 10 08/02/2012 Thay đổi giá trị biến declare v_student_id NUMBER:=&sv_student_id v_first_name varchar2(35); v_last_name varchar2(35); begin select first_name,last_name into v_first_name,v_last_name from student where student_id= v_student_id; dbms_output.put_line('Student name: '||v_first_name||' ‘ 11 ||v_last_name); exception when no_data_found then dbms_output.put_line('there is no student such student’); end; Thay đổi giá trị biến (tt) begin dbms_output.put_line('today is '||'&sv_day'); dbms_output.put_line('tomorrow will is '||'&sv_day'); end; 12 08/02/2012 Thay đổi giá trị biến (tt) Thiết lập giá trị SET VERIFY OFF SET VERIFY OFF begin dbms_output.put_line('today is '||'&sv_day'); dbms_output.put_line('tomorrow will is '||'&sv_day'); end; 13 Các quy tắc lập trình PL/SQL Định danh cho biến Kiểu liệu đối tượng Khởi tạo giá trị ban đầu 14 08/02/2012 Định danh cho biến DECLARE v_var1 varchar2(20); v_var2 number(5,3); BEGIN v_var1:='hello'; v_var2:=12.5; dbms_output.put_line('v_var1:'||v_var1); dbms_output.put_line('v_var2:'||v_var2); END; 15 Kiểu liệu đối tượng Kiểu liệu tham chiếu đến trực tiếp một cột CSDL Cú pháp: .%TYPE Ví dụ: DECLARE v_name student.first_name%type; vgrade grade.numeric_grade%type; BEGIN dbms_output.put_line(NVL(v_name, „No Name‟) || „has grade of ‟|| NVL(v_grade,0)); END; 16 08/02/2012 Khởi tạo giá trị ban đầu Sử dụng “:=” DECLARE v_cookies_amt Number:=2; v_cookies_per_cookie CONSTANT Number:=300; BEGIN dbms_output.put_line(v_cookies_amt* v_cookies_per_cookie); END; 17 Khởi tạo giá trị ban đầu (tt) Select item_name Into variable_name From table_name 18 Ví dụ: Declare V_average_cost Varchar2(10); Begin Select To_char(AVG(cost),'$9,999.99') Into v_average_cost From course; DBMS_output.put_line('The average cost is '||v_average_cost); End; 08/02/2012 Sequence Oracle Sequence: dùng để tạo tự đợng giá trị tḥc tính liệu 19 Sequence Oracle (tt) Trong dó: Sequence: tên sequence Increment by n: sô bước nhảy Start with n: số bắt đầu Maxvalue n | Nomaxvalue: giá trị lớn Minvalue n | Nominvalue: giá trị nhỏ nhấtt Cycle| Nocycle: đạt đến max se quay lui tiêp tục tăng Mặc định Nocycle Cache| Nocache: phát sinh vùng nhớ mặc định cache có 20 giá trị 20 10 08/02/2012 Ví dụ Declare v_num NUMBER:=&sv_user_num; BEGIN case when MOD(v_num,2)=0 then dbms_output.put_line(v_num||„la so chan‟); else dbms_output.put_line(v_num||„la so le‟); end case; END 33 Điều khiển lặp LOOP WHILE FOR 34 17 08/02/2012 LOOP Cú pháp EXIT LOOP phát biểu 1; phát biểu 2; IF THEN EXIT; END IF; END LOOP; • Cú pháp EXIT WHEN LOOP phát biểu 1; phát biểu 2; EXIT WHEN END LOOP; 35 Ví dụ set serveroutput on declare v_counter binary_integer:=0; begin LOOP v_counter:=v_counter+1; dbms_output.put_line('v_couter='||v_counter); if v_counter=5 then exit; end if; END LOOP ; dbms_output.put_line('Done'); end; 36 18 08/02/2012 WHILE Cú pháp WHILE LOOP phát biểu 1; phát biểu 2; … phát biểu n; END LOOP; 37 Ví dụ set serveroutput on declare v_counter binary_integer:=1; begin while v_counter