Teguh Susanto wrote:
>
>
> kepada Senior DBA dan milliser Oracle
> mungkin kita sering menggunakan function DECODE,NVL,CASE dalama suatu 
> query terutama pada field2 yg akan ditampilkan
> saya punya permasalahn tentang statment If,decode lain2nya didalam 
> filter suatu query
> contoh
> "SELECT a.NIP,a.nama_ pegawai,a. alamat FROM tm_pegawai a
> WHERE a.kd_bagian= '<parameter> '",tapi kalau  parameter tsb tidak ada 
> nilainya tentunya kosong, apakah ada semacam decode,statment IF atau 
> cara yg lain utntuk filter di query apabila parameter tsb tidak diisi 
> jadi seolah-olah " SELECT a.NIP,a.nama_ pegawai,a. alamat FROM 
> tm_pegawai a"
>

Tidak ada, kecuali querynya adalah dynamic sql.
Tapi ada workaround-nya dan tentu saja ada cost di dalamnya.
1. Jika field kd_bagian TIDAK memiliki nilai NULL, maka where condition 
berikut bisa digunakan
[code]
WHERE a.kd_bagian = DECODE(parameter,NULL,a.kd_bagian)
[/code]
2. Tetapi jika field kd_bagian mempunyai nilai NULL, maka index di 
kd_bagian (jika ada) terpaksa dikorbankan dengan menggunakan where condition
[code]
WHERE NVL(a.kd_bagian,'0') = DECODE(parameter,NULL,NVL(a.kd_bagian,'0'))
[/code]

> sementara ini masih saya atasi disisi programingnya
> atas perhatinnya sy ucapkan terimkasih
>  
> teguh
>
>

CMIIW,
AH

Kirim email ke