CURSOR MENGAPA HARUS ADA CURSOR PLSQL TIDAK MENGIJINKAN

  • Slides: 25
Download presentation
CURSOR

CURSOR

MENGAPA HARUS ADA CURSOR ? PL/SQL TIDAK MENGIJINKAN MENAMPILKAN BEBERAPA BARIS MENGGUNAKAN PERINTAH SELECT

MENGAPA HARUS ADA CURSOR ? PL/SQL TIDAK MENGIJINKAN MENAMPILKAN BEBERAPA BARIS MENGGUNAKAN PERINTAH SELECT

APAKAH CURSOR ITU ? SEJENIS VARIABEL YANG DIGUNAKAN UNTUK MENAMPUNG BANYAK NILAI BERUPA BARIS

APAKAH CURSOR ITU ? SEJENIS VARIABEL YANG DIGUNAKAN UNTUK MENAMPUNG BANYAK NILAI BERUPA BARIS ATAU RECORD

PEMBAGIAN CURSOR ØEKSPLISIT : CURSOR YANG DIBUKA DAN DITUTUP SECARA MANUAL Ø ATRIBUT :

PEMBAGIAN CURSOR ØEKSPLISIT : CURSOR YANG DIBUKA DAN DITUTUP SECARA MANUAL Ø ATRIBUT : § %FOUND (BARIS DITEMUKAN) § %NOTFOUND (BARIS TIDAK DITEMUKAN) § %ROWCOUNT (JUMLAH BARIS YANG DIAMBIL OLEH FECTH) § %ISOPEN (BERNILAI TRUE KALAU CURCOR MASIH TERBUKA)

CURSOR EKSPLISIT DECLARE NAMA_VARIABEL TIPE DATA; CURSOR NAMA_CURSOR IS SELECT. . . . .

CURSOR EKSPLISIT DECLARE NAMA_VARIABEL TIPE DATA; CURSOR NAMA_CURSOR IS SELECT. . . . . ; OPEN NAMA_CURSOR; FETCH NAMA_CURSOR INTO NAM_VARIABEL; CLOSE NAMA_CURSOR;

CONTOH CURSOR EKSPLISIT (DEKLARASI) set serveroutput on declare vgaji%rowtype; cursor gaji is select last_name,

CONTOH CURSOR EKSPLISIT (DEKLARASI) set serveroutput on declare vgaji%rowtype; cursor gaji is select last_name, salary, department_id from employees where department_id=50 order by last_name;

CONTOH CURSOR EKSPLISIT (BODY) begin open gaji; loop fetch gaji into vgaji; exit when

CONTOH CURSOR EKSPLISIT (BODY) begin open gaji; loop fetch gaji into vgaji; exit when gaji%notfound; dbms_output. put_line(vgaji. last_name ||‘ '||vgaji. salary||' '||vgaji. department_id); end loop; close gaji; end; /

PEMBAGIAN CURSOR Ø IMPLISIT : CURSOR YANG TIDAK PERLU DIDEKLARASIKAN DAN BERGABUNG DENGAN PERINTAH

PEMBAGIAN CURSOR Ø IMPLISIT : CURSOR YANG TIDAK PERLU DIDEKLARASIKAN DAN BERGABUNG DENGAN PERINTAH INSERT, DELETE DAN UPDATE Ø ATRIBUT : § SQL%FOUND (BERNILAI TRUE BILA TIDAK DITEMUKAN) § %NOTFOUND (KEBALIKANNYA) § %ROWCOUNT (MENUNJUKAN BANYAK BARIS YANG DIBERIKAN OLEH QUERY PADA USER) § %ISOPEN (BERNILAI TRUE PADA SAAT EKSEKUSI)

CONTOH CURSOR IMPLISIT (1) set serveroutput on DECLARE baris number(5); BEGIN UPDATE employees SET

CONTOH CURSOR IMPLISIT (1) set serveroutput on DECLARE baris number(5); BEGIN UPDATE employees SET salary = salary + 1000; IF SQL%NOTFOUND THEN dbms_output. put_line('Tidak ada Gaji berbasil di update');

CONTOH CURSOR IMPLISIT (2) ELSIF SQL%FOUND THEN baris : = SQL%ROWCOUNT; dbms_output. put_line('Gaji '

CONTOH CURSOR IMPLISIT (2) ELSIF SQL%FOUND THEN baris : = SQL%ROWCOUNT; dbms_output. put_line('Gaji ' || baris ||’ Sudah di update'); END IF; end; /

HANDLING EXCEPTIONS

HANDLING EXCEPTIONS

PEMBAGIAN HANDLING EXCEPTIONS • PREDEFINED EXCEPTION : kondisi exception yang sudah didefinisikan dalam oracle

PEMBAGIAN HANDLING EXCEPTIONS • PREDEFINED EXCEPTION : kondisi exception yang sudah didefinisikan dalam oracle • USER DEFINED EXCEPTION : penanganan error yang didefinisikan oleh programmer

CONTOH PREDEFINED EXCEPTION set serveroutput on DECLARE nama VARCHAR 2(15); BEGIN SELECT last_name INTO

CONTOH PREDEFINED EXCEPTION set serveroutput on DECLARE nama VARCHAR 2(15); BEGIN SELECT last_name INTO nama FROM employees WHERE first_name='John’; dbms_output. put_line(‘John is last name is : ‘||nama); End; /

CONTOH PREDEFINED EXCEPTION set serveroutput on DECLARE nama VARCHAR 2(15); BEGIN SELECT last_name INTO

CONTOH PREDEFINED EXCEPTION set serveroutput on DECLARE nama VARCHAR 2(15); BEGIN SELECT last_name INTO nama FROM employees WHERE first_name='John'; dbms_output. put_line('John is last name is : '||nama);

CONTOH PREDEFINED EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output. put_line('Pernyataan SELECT yang menampilkan banyak baris harus

CONTOH PREDEFINED EXCEPTION WHEN TOO_MANY_ROWS THEN dbms_output. put_line('Pernyataan SELECT yang menampilkan banyak baris harus menggunakan cursor'); end; /

CONTOH PREDEFINED EXCEPTION (1) set serveroutput on DECLARE vempid employees. employee_id%TYPE: =199; vnama employees.

CONTOH PREDEFINED EXCEPTION (1) set serveroutput on DECLARE vempid employees. employee_id%TYPE: =199; vnama employees. last_name%TYPE;

CONTOH PREDEFINED EXCEPTION ( 2) BEGIN SELECT last_name INTO vnama FROM employees WHERE employee_id=vempid;

CONTOH PREDEFINED EXCEPTION ( 2) BEGIN SELECT last_name INTO vnama FROM employees WHERE employee_id=vempid; dbms_output. put_line('Namanya : '||vnama);

CONTOH PREDEFINED EXCEPTION (2) EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output. put_line('Data Tidak Ada'); end; /

CONTOH PREDEFINED EXCEPTION (2) EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output. put_line('Data Tidak Ada'); end; /

CONTOH USER DEFINED EXCEPTION (1) set serveroutput on DECLARE vempid employees. employee_id%TYPE; vnama employees.

CONTOH USER DEFINED EXCEPTION (1) set serveroutput on DECLARE vempid employees. employee_id%TYPE; vnama employees. last_name%TYPE; vsal employees. salary%TYPE; pesan exception;

CONTOH USER DEFINED EXCEPTION (2) BEGIN SELECT last_name, salary INTO vnama, vsal FROM employees

CONTOH USER DEFINED EXCEPTION (2) BEGIN SELECT last_name, salary INTO vnama, vsal FROM employees WHERE employee_id=182; dbms_output. put_line(vnama||' '||vsal); if vsal < 3000 then raise pesan; end if;

CONTOH USER DEFINED EXCEPTION (3) EXCEPTION WHEN pesan then dbms_output. put_line('Gaji dibawah $3000'); end;

CONTOH USER DEFINED EXCEPTION (3) EXCEPTION WHEN pesan then dbms_output. put_line('Gaji dibawah $3000'); end; /

PROCEDURE DAN FUNCTION

PROCEDURE DAN FUNCTION

PROCEDURE CREATE OR REPLACE PROCEDURE TAMPIL IS VSAL EMPLOYEES. SALARY%TYPE; BEGIN SELECT SALARY INTO

PROCEDURE CREATE OR REPLACE PROCEDURE TAMPIL IS VSAL EMPLOYEES. SALARY%TYPE; BEGIN SELECT SALARY INTO VSAL FROM EMPLOYEES WHERE EMPLOYEE_ID=199; DBMS_OUTPUT. PUT_LINE(VSAL); END; /

PROCEDURE EXEC TAMPIL; BEGIN TAMPIL; END; /

PROCEDURE EXEC TAMPIL; BEGIN TAMPIL; END; /

MENJALANKAN PROCEDURE CREATE OR REPLACE PROCEDURE INPUT_TAMPIL(VEMPID NUMBER) IS VNAMA EMPLOYEES. LAST_NAME%TYPE; VSAL EMPLOYEES.

MENJALANKAN PROCEDURE CREATE OR REPLACE PROCEDURE INPUT_TAMPIL(VEMPID NUMBER) IS VNAMA EMPLOYEES. LAST_NAME%TYPE; VSAL EMPLOYEES. SALARY%TYPE; BEGIN SELECT LAST_NAME, SALARY INTO v. NAMA, v. SAL FROM EMPLOYEES WHERE EMPLOYEE_ID=VEMPID; DBMS_OUTPUT. PUT_LINE('NAMANYA : '||VNAMA||' GAJINYA : '||VSAL); END; /