Kamis, 21 Oktober 2010

CURSOR EXPLISIT

Cursor Explisit menggunakan DOFC(Declare, Open, Fetch, Close)

Hal ini biasanya dibuat pada pernyataan SELECT yang mengembalikan lebih dari satu baris.

1. Syntax umum untuk menciptakan kursor
cursor_name CURSOR IS select_statement;

NB : - Cursor-name : Sebuah nama yang cocok untuk kursor
- Select-statement : Sebuah query pilih yang mengembalikan beberapa baris

2. Langkah-langkah membuat Cursor Explisit
- MENYATAKAN kursor pada bagian deklarasi
- TERBUKA kursor di Bagian Eksekusi
- FETCH data dari kursor ke PL / SQL variabel atau catatan di Bagian Pelaksanaan.
- CLOSE kursor di Bagian Eksekusi sebelum Anda mengakhiri PL / SQL Block

3. Cara mengakses kursor explisit
- Buka kursor
syntax : OPEN cursor_name;
- Ambil record dalam satu kursor pada suatu waktu
syntax : FETCH cursor_name INTO record_name; atau FETCH cursor_name INTO variable_list;
- Tutup kursor
syntax : CLOSE cursor_name

4. Ini adlah beberapa atribut untuk memeriksa status dari kursor explisit


5. Contoh :
a. declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
pekerjaan jobs.job_title%type;
gaji employees.salary%type;
cursor magdalena is
select first_name,job_title,salary
from employees e
JOIN jobs j ON(j.job_id=e.job_id)
where first_name=nama_cari;
begin
nama_cari:='&Masukkan_nama';
open magdalena;
loop
fetch magdalena into nama_depan,pekerjaan,gaji;
exit when magdalena%notfound;
dbms_output.put_line('Pegawai bernama '||nama_depan || ' pekerjaannya '|| pekerjaan || ' dan gajinya adalah USD '||gaji);
end loop;
close magdalena;
end;
/

b. declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
email employees.email%type;
telepon employees.phone_number%type;
cursor magdalena is
select first_name,email,phone_number
from employees
where first_name = nama_cari;
begin
nama_cari:='&Masukkan_nama';
open magdalena;
loop
fetch magdalena into nama_depan,email,telepon;
exit when magdalena%notfound;
dbms_output.put_line('Pegawai bernama : '||nama_depan);
dbms_output.put_line('Email : '||email);
dbms_output.put_line('Telepon : '||telepon);
end loop;
close magdalena;
end;
/

:: SEKIAN ::
--JIKA MASIH KURANG, DIMAAFIN YYA...--

Jumat, 15 Oktober 2010

SCRIPTING

STRUKTUR ANONYMOUS

Sebuah anonim PL / SOL blok adalah blok kode yang tidak disimpan dalam database. When submitted to the database, the code will be executed immediately. Ketika diserahkan ke database, kode akan dieksekusi segera. An anonymous PL/SQL block always starts with DECLARE or BEGIN Sebuah anonim PL / SQL block selalu dimulai dengan LAPORKAN atau BEGIN.

Contoh :
BEGIN
dbms_output.put_line ('Hi nama saya Magdalena / SQL');
END;
/

*SYNTAX UNTUK FUNGSI

CREATE [OR REPLACE] FUNCTION function_name [(parameter [,] parameter)]
IS
[declaration_section]
BEGIN
executable_section
kembali [mengembalikan nilai]

[PENGECUALIAN
exception_section]
AKHIR [procedure_name];

Contoh :
CREATE OR REPLACE FUNGSI to_date_check_null (dateString IN VARCHAR2, DateFormat IN VARCHAR2)
RETURN DATE IS
BEGIN
JIKA dateString IS NULL BERAKHIR
return NULL;
LAIN
kembali TO_DATE (date String, Date Format);
END IF;
AKHIR to_date_check_null;
/

*SYNTAX UNTUK PROSEDUR

CREATE [OR REPLACE] PROSEDUR procedure_name [(parameter [IN | OUT | IN OUT [DEFAULT value]] [,] parameter)]
IS
[Declaration_section]
BEGIN
executable_section
[PENGECUALIAN
exception_section]
AKHIR [procedure_name];

Contoh :
CREATE OR REPLACE GetNumberOfStudents PROSEDUR
(CourseId DI nomor, nomor numberOfStudents OUT)
IS
/ * Ada cara yang lebih baik untuk menghitung jumlah siswa,
tapi ini adalah kesempatan yang baik untuk menunjukkan kursor dalam tindakan
* /
student_cur kursor adalah
pilih studentId, studentName
dari program
dimana course.courseId = courseId;
student_cur student_rec% ROWTYPE;
BEGIN
LOOP
FETCH student_cur KE student_rec;
EXIT% KAPAN NOTFOUND student_cur;
numberOfStudents: = numberOfStudents + 1;
END LOOP;
student_cur CLOSE;
PENGECUALIAN
SAAT YANG LAIN
raise_application_error (-20001, 'ditemui Error -' | | SQLCODE | | '-' | | SQLERRM);
AKHIR GetNumberOfStudents;
/

*SYNTAX UNTUK PAKET

CREATE OR REPLACE PACKAGE student_pkg to_date_check_null SEBAGAI FUNGSI (dateString IN VARCHAR2, DateFormat IN VARCHAR2) RETURN TANGGAL; PROSEDUR

Contoh :
CREATE OR REPLACE PACKAGE BODY student_pkg AS

FUNGSI to_date_check_null (dateString IN VARCHAR2, DateFormat IN VARCHAR2)
RETURN DATE IS
BEGIN
...
END;

PROSEDUR GetNumberOfStudents (
courseId DI nomor, nomor numberOfStudents OUT)
IS
BEGIN
...
END;

END;
/

NB :
Selain melakukan fungsi menjadi sebuah perpustakaan umum prosedur dan fungsi ada tiga aspek paket Oracle yang unik. Mereka adalah:

1. Bagian inisialisasi. Bagian inisialisasi sebuah paket adalah dieksekusi sekali pertama kali setiap bagian dari paket yang digunakan dalam sesi. Hal ini dapat berharga untuk menetapkan variabel sesi.
2. Paket, secara default, mempertahankan nilai-nilai variabel dalam sesi setelah pelaksanaan prosedur atau fungsi, dalam paket, selesai. Perilaku ini dapat dimodifikasi untuk menjadi identik dengan prosedur dan fungsi dengan menggunakan pragma SERIALLY_REUSABLE.
3. Paket bisa kelebihan beban. Sebuah paket dapat berisi beberapa prosedur dan fungsi dengan nama yang sama memberikan parameter yang dikirimkan dan dikembalikan berbeda.

Kamis, 30 September 2010

TUTORIAL DBMS


1. SELECT

SELECT berfungsi untuk mengambil data dari table di basis data.

BENTUK : * select from

where

Contoh : select * from customer where kota = 'Bandung';

BENTUK : * select from
where
group by Having
order by

Contoh : select kota, count(kdcustomer) "Jumlah"
from customer group by kota
having count(kdcustomer) >1;

* Cara melihat table/indeks/view/objek database yg sudah dibuat:

BENTUK : select *(asteris) from (CAT OR TAB);


2. INSERT adalah perintah yang digunakan untuk menyisipkan data baru (baris baru) ke dalam tabel dengan menentukan daftar nilai yang akan dimasukkan ke setiap kolom tabel. Penyusunan nilai-nilai yang penting, dan bagaimana mereka diatur dalam kode sesuai dengan bagaimana nilai data akan diatur dalam tabel SQL Tautantersebut.

INSERT INTO
VALUES('Gerald Garner','8/15/08','19" LCD Screen',3) VALUES ('Gerald Garner', '8 / 15/08 ', '19 "LCD Screen', 3)
INSERT INTO orders Perintah INSERT INTO
VALUES('Tizag','7/25/08','19" LCD Screen',3); VALUES ('Tizag', '7 / 25/08 ''19, "LCD Screen', 3);
INSERT INTO orders Perintah INSERT INTO
VALUES('Tizag','7/25/08','HP Printer',2); VALUES ('Tizag' Printer HP, '7 / 25/08 ',' ', 2);

3. UPDATE adalah perintah untuk mengubah isi data
CONTOH : update customer
set nmcustomer = 'Toko Satu'
where kdcustomer = 'C-065';

4. DELETE adalah perintah untuk menghapus isi data
CONTOH :delete from penjualan
where kdcustomer = 'C-109';

delete from customer
where kdcustomer = 'C-109'