Archive for June, 2010

Using oracle built in function

1

Berikut dijelaskan contoh-contoh penggunaan fungsi-fungsi oracle yang sudah di post berikutnya;

Penggunaan UPPER dan LOWER

SQL> select UPPER(first_name) T1, LOWER(last_name) T2 from employees;

SQL>select UPPER('Nailuvar Education Center') as TEST_UPPER from dual;

Contoh Penggunaan fungsi CONCAT

SQL> select CONCAT('My Name is ', first_name) name from employees;

SQL>select CONCAT('Nailuvar ', ' Education Center') as header from dual;

Oracle Function Reference

0

Oracle mempunya built in function yang cukup lengkap untuk beberapa kebutuhan. Berikut adalah daftar fungsi-fungsi yang tersedia di oracle yang sering digunakan.

Single Row Function

Character Function

Nama Fungsi Kegunaan Contoh
LOWER (column | expression) Fungsi yang digunakan untuk merubah column | expression menjadi lower case lihat contoh
UPPER(column | expression) Fungsi yang digunakan untuk merubah column | expression menjadi upper case / Huruf kapital lihat contoh
CONCAT(column1 | expression1,column2 | expression2) Fungsi yang digunakan untuk menggabungkan column1 | expression1 dengan column2 | expression2 menjadi menjadi satu kata lihat contoh

EXECUTE IMMEDIATE

0

Execute immediate merupakan pengganti dari DBMS_SQL, jika kita sebelumnya menggunakan DBMS_SQL cukup merepotkan sekarang anda tidak perlu kawatir lagi. Yang perlu diingat perintah execute immediate tidak otomatis commit untuk perintah-perintah DML, jadi kita harus melakukan commit atau rollback manual. Sql yang dieksekusi tidak perlu diakhiri dengan tanda titik koma (;).

Berikut beberapa contoh penggunaan execute immediate.

Menggunakan perintah DDL

begin
execute immediate 'create table belajar(t1 number(3))';
end;

SQL> select * from belajar;

T1
---

Menggunakan Variable dalam dinamik SQL

Contoh berikut adalah insert data ketable belajar.

declare
v_t1 number(3); -- deklarasi variable v_t1
begin

v_t1 := 123; -- assignment varibale v_t1 dengna nilai 123

execute immediate 'insert into belajar(t1) values (:t1) ' using v_t1;
commit;

select * from belajar;

end;

SQL> select * from belajar;

T1
----
123

“:t1″ adalah variable yang akan digantikan oleh v_t1, binding yang digunakan adalah “:”

Mengembalikan Nilai

Untuk mendapatkan nilai dari execute immediate kita menggunakan keyword INTO

declare
v_t1 number(3); -- deklarasi variable
begin

execute immediate 'select t1 + 5 from belajar'  into v_t1;

dbms_output.put_line ('Hasil : '||v_t1);

Hasil : 128

end;

jika select membutuhkan kondisi, misal dengan tambahan filter t1=x query menjadi execute ‘select t1 + 5 from belajar where t1=:x’ into v_t1 using x ;

Menjalankan Package/Store Procedure / Function

Contoh procedure yang digunakan adalah

declare
  v_str varchar2(20);
  v_serviceName varchar2(40) : 'MyPackage.printHello';
begin
  v_str := 'Selamat Datang di Nailuvar Education Center';
  execute immediate 'BEGIN '|| v_serviceName || ' (:a,:b); END;' using in v_str , out v_status;

 dbms_output.put_line ('Status = '||v_status);
end;

Menyimpan hasil dalam bentuk Record PL/SQL
contoh ini akan menampilkan data employee pada schema HR, data yang akan ditampilkan adalah employee_id dan nama.

declare
-- deklarasi type record  dengan nama RData
TYPE RData IS RECORD (
 emp_id number(9),
 emp_name varchar2(40)
);

--deklarasi variable v_data dengan type RData.

begin
  EXECUTE IMMEDIATE 'select employee_id,first_name || last_name from employee where employee_id = 1234 ' into v_data;
end;

demikian beberapa contoh penggunaan execute immediate yang membuat pemrosesan query dinamis menjadi lebih simple jika dibandingkan menggunakan DBMS_SQL. Yang harus diperhatikan adalah penanganan error, setiap kemungkinan error harus ditangani.

Selamat Mencoba.

Go to Top