Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

C U R S O R.

Presentasi serupa


Presentasi berjudul: "C U R S O R."— Transcript presentasi:

1 C U R S O R

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

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

4 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)

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

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

7 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; /

8 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)

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

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

11 HANDLING EXCEPTIONS

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

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

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

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

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

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

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

19 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;

20 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;

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

22 PROCEDURE DAN FUNCTION

23 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; /

24 PROCEDURE EXEC TAMPIL; BEGIN TAMPIL; END; /

25 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 vNAMA,vSAL FROM EMPLOYEES WHERE EMPLOYEE_ID=VEMPID; DBMS_OUTPUT.PUT_LINE('NAMANYA : '||VNAMA||' GAJINYA : '||VSAL); END; /


Download ppt "C U R S O R."

Presentasi serupa


Iklan oleh Google