Cursor Merupakan pointer ke daerah konteks ini. PL/SQL mengontrol area konteks
melalui kursor.Cursor menahan baris (satu atau lebih) yang dikembalikan oleh
pernyataan SQL. Himpunan baris yang dipegang kursor disebut sebagai himpunan
aktif user memberi nama kursor sehingga dapat dirujuk dalam program untuk
mengambil dan memproses baris yang dikembalikan oleh pernyataan SQL, satu per
satu. Ada dua jenis kursor
A.Cursor Implisit
Cursor implisit secara otomatis dibuat oleh Oracle setiap kali pernyataan SQL
dijalankan, ketika tidak ada kursor eksplisit untuk pernyataan tersebut. Pemrogram
tidak dapat mengontrol kursor implisit dan informasi di dalamnya.
Setiap kali pernyataan DML (INSERT, UPDATE dan DELETE) dikeluarkan, kursor
implisit dikaitkan dengan pernyataan ini. Untuk operasi INSERT, kursor menyimpan
data yang perlu dimasukkan. Untuk operasi UPDATE dan DELETE, kursor
mengidentifikasi baris yang akan terpengaruh.
B.Atribut Cursor
C.Contoh program Implisit
contoh program implisit SQL%FOUND
pernyataan manipulasi data SQL dijalankan, %FOUNDmenghasilkan NULL. Setelah itu,
%FOUNDmenghasilkan TRUEjika INSERT, UPDATE, atau DELETEpernyataan memengaruhi satu
atau lebih baris, atau SELECT INTOpernyataan mengembalikan satu atau lebih baris. Jika tidak,
%FOUNDhasil FALSE. Dalam Contoh user menggunakan gunakan %FOUNDuntuk menyisipkan
baris jika penghapusan berhasil.
Contoh SQL%ROWCOUNT
Jika sebuah SELECT INTOpernyataan mengembalikan lebih dari satu baris, PL/SQL memunculkan
pengecualian yang telah ditentukan sebelumnya TOO_MANY_ROWSdan
%ROWCOUNTmenghasilkan 1, bukan jumlah baris aktual yang memenuhi kueri.
Nilai SQL%ROWCOUNTatribut mengacu pada pernyataan SQL yang paling baru dieksekusi dari
PL/SQL. Untuk menyimpan nilai atribut untuk digunakan nanti, tetapkan ke variabel lokal segera.
D.Pertimbangan penggunaan atribut cursor implisit
Nilai atribut kursor selalu mengacu pada pernyataan SQL yang paling baru dieksekusi, di
mana pun pernyataan itu berada. Mungkin dalam lingkup yang berbeda (misalnya,
dalam sub-blok). Untuk menyimpan nilai atribut untuk digunakan nanti, tetapkan ke
variabel lokal segera. Melakukan operasi lain, seperti pemanggilan prosedur, mungkin
mengubah nilai variabel sebelum Anda dapat mengujinya.
SQL%NOTFOUNDatribut tidak berguna dalam kombinasi dengan SELECT
INTO pernyataan:
Jika SELECT INTO pernyataan gagal mengembalikan baris, PL/SQL segera memunculkan pengecualian yang telah ditentukan NO_DATA_FOUND, mengganggu aliran kontrol sebelum Anda dapat memeriksa %NOTFOUND.
Sebuah SELECT INTOpernyataan yang memanggil SQL fungsi agregat selalu mengembalikan nilai atau null. Setelah pernyataan seperti itu, %NOTFOUNDatributnya selalu FALSE, jadi tidak perlu memeriksanya.
E.Cursor Enkripsi
Cursor eksplisit merupakan kursor yang ditentukan pemrogram untuk mendapatkan
kontrol lebih besar atas area konteks . Kursor eksplisit harus didefinisikan di bagian
deklarasi Blok PL/SQL. Itu dibuat pada Pernyataan SELECT yang mengembalikan lebih
dari satu baris.
Syntak yang digunakan:
CURSOR cursor_name IS select_statement;
Contoh:
DECLARE
Cursor emp_cursor IS
Select employee_id, last_name
FROM employees
WHERE department_id = 30;
F.Mendeklarasikan Cursor Enkripsi
mendeklarasikan cursor sebelum mereferensikannya ke pernyataan lain. terlebih dahulu
memberi kursor nama dan mengaitkannya dengan kueri tertentu.user dapat secara opsional
mendeklarasikan tipe pengembalian untuk kursor, seperti table_name%ROWTYPE. Anda
dapat secara opsional menentukan parameter yang Anda gunakan dalam WHEREklausa alihalih merujuk ke variabel lokal. Parameter ini dapat memiliki nilai default.
Contoh:
Kursor bukan variabel PL/SQL: User tidak dapat menetapkan nilai ke kursor atau
menggunakannya dalam ekspresi. Kursor dan variabel mengikuti aturan pelingkupan yang
sama. Penamaan kursor setelah tabel database dimungkinkan tetapi tidak disarankan.
Kursor dapat mengambil parameter, yang dapat muncul dalam kueri terkait di mana pun
konstanta dapat muncul. Parameter formal kursor harus IN parameter; mereka memberikan nilai
dalam kueri, tetapi tidak mengembalikan nilai apa pun dari kueri. Anda tidak dapat
memaksakan batasan NOT NULLpada parameter kursor.
Seperti yang ditunjukkan contoh berikut:
Parameter kursor dapat direferensikan hanya dalam kueri yang ditentukan dalam deklarasi
kursor. Nilai parameter digunakan oleh kueri terkait saat kursor dibuka
0 Komentar