I.
TUJUAN :
1.
Dapat memahami Fungsi untuk string.
2.
Dapat membuat contoh penggunaan fungsi pada tabel.
3.
Dapat menerapkan command
pada tabel.
SUBJEK PEMBAHASAN :
LPAD, RPAD, SUBSTR, ASCII,INITCAP
**************
Untuk mempermudah proses
yang dilakukan pada program, pada PL SQL telah dibuat fungsi dasar untuk tipe
data yang berbeda (string, tanggal, angka,dll). Pada pembahasan ini akan
dibahas fungsi yang berhubungan dengan karakter. Adapun beberapa fungsi untuk string yaitu:
1. ASCII
2. ASCIISTR
3. CHR
4. COMPOSE
5. CONCAT
6. Concat with ||
7. CONVERT
8. DECOMPOSE
9. DUMP
10. INITCAP
11. INSTR
12. INSTR2
13. INSTR4
14. INSTRB
15. INSTRC
16. LENGTH
17. LENGTH2
18. LENGTH4
19. LENGTHB
20. LENGTHC
21. LOWER
22. LPAD
23. LTRIM
24. NCHR
25. REPLACE
26. RPAD
27. RTRIM
28. SOUNDEX
29. SUBSTRTO_CHAR
30. TO_DATE
31. TRANSLATE
32. TRIM
33. UPPER
34. VSIZE
Namun dalam bahasan kali ini akan dibahas beberapa fungsi yang sering digunakan
Fungsi
|
Melakukan
|
Function Melakukan
LOWER(column/expression)
|
Mengkonversi
nilainilai karakter huruf menjadi
lowercase (huruf kecil)
|
UPPER(column/expression)
|
Mengkonversi
nilainilai karakter huruf menjadi
uppercase (huruf besar)
|
INITCAP(column/expression)
|
Mengkonversi
nilainilai alpha karakter menjadi
uppercase untuk huruf pertama
dari tiap kata; semua huruf - huruf lain lowercase
|
CONCAT(column1/expressio1,
colum2/expression2)
|
Menggabungkan
nilai karakter pertama ke karakter kedua : sama dengan operator penggabungan
( || )
|
SUBSTR (column/expression,
m[,n])
|
Menghasilkan
karakterkarakter tertentu dari nilai karakter dimulai pada posisi karakter kem,
Ken panjang karakter (jika m adalah negatif, dihitung mulai dari akhir nilai karakter. Jika n dihilangkan, menghasilkan semua
karakter
sampai akhir dari rangkaian.)
|
LENGTH (column/expression)
|
Mengembalikan jumlah karakter dalam ekspresi
|
INSTR (column/expression,
'string',
[,m],
[n])
|
Mengembalikan
posisi numerik dari suatu rangkaian penamaan. Secara optional, Anda dapat menyediakan suatu posisi kem
untuk
memulai pencarian, dan yang terjadi din
dari
suatu rangkaian. m dan n
defaultnya
1,
artinya pencarian dimulai di awal suatu pencarian dan melaporkan kejadian
yang
pertama.
|
LPAD (column /expression,
n,'string')
|
Mengisi
nilai karakter perataan kiri (leftjustified)
Ke suatu
lebar total n posisi karakter
|
RPAD
(column /expression, n,'string')
|
Mengisi
nilai karakter perataan kanan (right Justified) ke
suatu lebar total n posisi karakter
|
REPLACE (text,
search_string,
replacement_string)
|
Mencari suatu
ekspresi teks untuk suatu rangkaian
karakter
dan, jika ditemukan, digantikan dengan
rangkaian yang telah ditentukan.
|
1.
ASCII & ASCIISTR
Pada fungsi ASCII dan
ASCIISTR ini, Oracle PL/SQL akan mengembalikan kode nomor dari suatu karakter. Jika
digunakan pada suatu kalimat (string) maka fungsi ASCII akan mengembalikan kode
nomor dari karakter pertama dan mengabaikan karakter selanjutnya. Adapun syntax
penulisa fungsi ASCII dan ASCIISTR ditunjukkan seperrti contoh berikut :
ASCII(string); atau ASCIISTR(string);
ASCII('t');
Hasil: 116
ASCII('tea');
Hasil: 116
ASCII('T');
Hasil: 84
ASCII('TEA');
Hasil: 84
Sedangkan ASCIISTR berfungsi untuk
mengkonversi sebuah string ASCII dalam bentuk karakter set database. Seperti contoh berikut
SELECT ASCIISTR('ABÄCDE') FROM DUAL;
ASCIISTR
----------
AB\00C4CDE
2.
CONCAT
Fungsi dari CONCAT
adalah untuk menyambung atau merangkai suatu karakter dengan karakter lainnya
sehingga seolah-olah menjadi satu kesatuan.
Adapun syntax dari fungsi CONCAT
ini yaitu :
CONCAT( string1, string2 )
CONCAT('a', 'b');
Hasil: 'ab'
Jika untuk menggabungkan
lebih dari 2 string, maka harus digunakan CONCAT bersarang dengan penulisan
syntax sebagai berikut:
CONCAT( CONCAT( string1, string2 ), string3 ) è untuk 3 string
CONCAT( CONCAT( CONCAT( string1, string2 ), string3 ), string4 ) è untuk 4 string
Selain menggunakan
perintah CONCAT, untuk merangkai beberapa string menjadi satu kesatuan yaitu
dengan menggunakan tanda “||” (2 buah garis) dengan cara penulisan seperti
berikut:
string1 || string2 || string_n è hingga string ke-n
'Indo|| ' rama’
Hasilnya: ‘Indorama
3.
INITCAP
Fungsi dari INITCAP
adalah untuk merubah huruf pertama dari suatu kata / kalimat menjadi huruf
kapital (huruf besar) dan sisa huruf lainnya tetap huruf kecil. Adapun syntax
dari INITCAP dan contohnya ditunjukkan sebagai berikut:
INITCAP(‘indorama ientures);
Hasil: ‘Indorama Ventures’);
INITCAP('GEORGE BURNS');
Hasil: 'George Burns'
Jadi meskipun pada kalimat menggunakan huruf kapital semua, dengan fungsi INITCAP ini maka hanya huruf pertama saja yang menjadi huruf kapital.
4.
INSTR
Fungsi dari INSTR adalah
untuk mengembalikan lokasi/keberadaan dari sebuah subtring pada string. Adapun
syntax dari fungsi INSTR ditnjukkan sebagai berikut:
INSTR( string, substring [, start_position [, nth_appearance ] ] )
INSTR('Indorama, 'r')
Hasilnya: 5 (kemunculan pertama dari huruf 'r')
5.
LENGTH
Fungsi dari LENGTH
adalah untuk menghitung jumlah total karakter dari suatu string adapun syntax
dan contho penulisan dari fungsi LENGTH ditunjukkan sebagai berikut:
LENGTH( string1 )
LENGTH('Tech on the Net')
Hasilnya: 15
LENGTH('Tech on the Net ')
Hasilnya: 16
Jika menghitung string
yang merupakan kalimat, maka jika menggunakan LENGTH ini maka karakter SPASI
juga dihitung. Jika yang dihitung adalah NULL maka fungsi LENGTH juga akan
mengembalikan nilai NULL.
6.
LPAD
Fungsi dari LPAD adalah mengisi nilai karakter dengan perataan
kiri (leftjustified) ke suatu lebar total n posisi karakter. Jadi
kita bisa meratakan kiri suatu string/kalimat dengan menggunakan pengisian
karakter. Adapun syntax dan contoh penulisan fungsi LPAD ini ditunjukkan
sebagai berikut:
LPAD(string,n_total,’karakter pengisi’);
lpad(‘saya’,8,'*');
hasilnya : ****saya
7.
LTRIM
Fungsi dari LTRIM adalah
untuk memotong suatu karakter spesifik pada sebelah kiri dari sebuah string.
Adapun syntax dan contoh dari fungsi LTRIM ditunjukkan sebagai berikut:
LTRIM( string1, [ trim_string ] )
LTRIM(' tech', ' ')
Hasilnya: 'tech'
LTRIM('123123Tech123', '123')
Hasilnya : 'Tech123'
Catatan dalam penggunaan
LTRIM, akan memotong karakter tidak berdasarkan pola, tapi berdasarkan karakter
yang terdapat pada substring pemotong. Sebagai contoh pada pemotongan berikut:
LTRIM('123123Tech123', '123')
Hasilnya : 'Tech123'
LTRIM('123123Tech123', '132')
Hasilnya : 'Tech123'
Hasil yang didapatkan akan tetap sama meskipun substrin pemotong dirubah posisinya (123,132,321,231,dst) hal ini karena fungsi LTRIM hanya memotong berdasarkan karakter yang digunakan , meskipun seolah-olah memotong berdasakan pola substring.
8.
REPLACE
Jika LTRIM berfungsi
untuk memotong string berdasarkan karakter pada subtring pemotong, maka REPLACE
berfungsi untuk menggantikan karakter pada string berdasarkan substring
pengganti.
REPLACE( string1, substring_yang_digantikan, [ substring pengganti] )
Jika pada [string
pengganti ] tidak dituliskan, maka REPLACE akan menghapus karakter berdasarkan kombinasi
pola yang sesuai dengan
subtring_yang_digantikan. Seperti yang ditunjukkan pada contoh berikut:
REPLACE('123tech123', '123'); è REPLACE('123tech123', '321');
Hasilnya:'tech' hasilnya : '123tech123'
REPLACE('0000123', '0', ' ');
Hasilnya: ' 123'
Dan jika [substring_pengganti]
dituliskan, maka REPLACE akan menggantikan subtring_yang_digantikan dengan
[substring_pengganti] seperti contoh diatas tersebut.
9.
RPAD
Fungsi dari RPAD sama seperti LPAD namun berbeda
posisinya. Fungsi dari RPAD yaitu mengisi nilai karakter perataan kiri (leftjustified)
ke suatu lebar total n posisi karakter. Jadi kita bisa meratakan kiri
suatu string/kalimat dengan menggunakan pengisian karakter. Adapun syntax dan
contoh penulisan fungsi LPAD ini ditunjukkan sebagai berikut:
RPAD(string,n_total,’karakter pengganti’);
rpad(‘saya’,8,'*');
hasilnya : saya****
10.
RTRIM
Sama seperti LTRIM,
fungsi dari RTRIM adalah untuk memotong suatu karakter spesifik pada sebelah
kiri dari sebuah string. Adapun syntax dan contoh dari fungsi LTRIM ditunjukkan
sebagai berikut:
RTRIM('tech ')
Hasilnya : 'tech'
RTRIM('tech ', ' ')
Hasilnya : 'tech'
Selain itu juga dalam
penggunaan RTRIM sama seperti pada LTRIM yaitu memotong string berdasarkan
karakter yang terdapat pada substring, bukan pola kombinasi dari subtring yang
digunakan. Selain itu juga, pada penggunaan RTRIM ini akan berpengaruh pada
string yang dihasilkan dengan panjang data yang digunakan. Sebagai contoh pada variabel
address varchar2(20) maka, jika pengisian variabel address adalah ‘Jakarta’
maka yang tersisa adalah 13 karakter
kosong dan terisi dengan ‘SPASI’. Penggunaan RTRIM ini akan sangat berguna jika
digabungkan dengan DECODE dalam hal proses yang berkaitan dengan variabel
address tersebut.
11.
SUBSTR
Fungsi dari SUBSTR adalah untuk mengekstrak atau
mengambil sebuah substring (sebagian karakter) dari sebuah string.
SUBSTR( string, posisi_awal, [panjang subtring] )
SUBSTR('This is a test', 6, 2)
Hasilnya : 'is'
Catatan dalam penggunaan SUBSTR yaitu:
1. Jika posisi_awal diinisialisasi dengan 0 maka program akan memulai dari awal string sama seperti jika diinisialisasi dengan 1.
2. Jika posisi_awal diinisialisasi dengan bilangan negatif maka program akan menghitung dari akhir string
3. Jika posisi_awal diinisialiasi dengan NULL maka program akan mengembalikan nilai NULL.
tugas
1.
Buat tabel Text dengan
data sebagai berikut
No
|
Text
|
1
|
PT Indorama Ventures Indonesia
|
2
|
Desa CIhuni Kecamatan Pagedangan kabupaten Tangerang
15820
|
3
|
www. Indoramaventures.net
|
4
|
Email admin@id.indorama.net
|
a) Hitung jumlah karakter masing-masing record
b) Hitung huruf A pada masing-masing record
c) Buatlah huruf pada tiap kata dalam record menjadi huruf kapital dan yang lain tidak
d) Konversi huruf dari tiap record menjadi ASCII
e) Masukkan tanda “-“ sebagai pemisah untuk setiap kata
f) Buang SPASI dari tiap kata
g) Beri tanda bintang “*” di depan dan di akhir tiap record
**************
Listing Program
--drop table string;-- diaktifin kalo udah ada tabel yg namanya "string" atau pas ulang2 compile
create table string
(
no
number,
text varchar2(70)
);
insert into string values(1,'pt indorama ventures
indonesia');
insert into string values(2,'desa cihuni kecamatan
pagedangan kabupaten tangerang 15820');
insert into string
values(3,'www.indoramaventures.net');
insert into string values(4,'email admin@id.indorama.net');
commit;
select *from string;
declare
tot number;
init varchar2(100);
rep varchar2(100);
lpad varchar2(100);
rpad varchar2(100);
ascii varchar2(100);
repp varchar2(100);
lem varchar2(100);
awl number; jum number:=0;
akh varchar2(100); tota number;
begin
for i in 1..4 loop
select length(text) into tot from string WHERE no=i;
dbms_output.put_line('total
karakter : ' || tot ||' Karakter');
--hitung jumlah karakter dari tiap record
end loop;
for i in 1..4 loop
select initcap(text) into init from string WHERE no=i;
dbms_output.put_line('Karakter
Huruf Besar: ' || init);-- membuat huruf
pertama menjadi huruf besar
end loop;
for i in 1..4 loop
select replace(text,' ')
into rep from string WHERE no=i;
dbms_output.put_line('Buang
spasi: ' || rep); --membuang spasi
end loop;
for i in 1..4 loop
select
lpad(text,70,'****'),rpad(text,70,'****') into lpad,rpad from string WHERE no=i;
dbms_output.put_line('Bintang-bintang:
' || lpad|| rpad); --menambah bintang
pada tiap record
end loop;
for i in 1..4 loop
select ascii(text) into
ascii from string WHERE no=i;--ini jika
menggunakan ascii sehingga yang diambil hanya ascii dari karakter pertama dan
yang lain diabaikan
dbms_output.put_line('ASCII: ' || ascii);
end loop;
for i in 1..4 loop
select asciistr(text)
into ascii from string WHERE no=i;--ini jika menggunakan asciistr dan tidak ada
perubahan pada string
dbms_output.put_line('ASCII: ' || ascii);
end loop;
for i in 1..4 loop
select replace(text,' ','-')
into rep from string WHERE no=i;
dbms_output.put_line('Pake tanda - : ' ||
rep); -- mengganti spasi dengan tanda -
end loop;
for i in 1..4 loop
select replace(text,'a') into akh from string where no=i;
dbms_output.put_line('tanpa
a : ' || akh); --menghapus hiruf A
end loop;
end;
Tampilan
1.
Buat tabel Employee
a)
Masukkan data seperti
pada tabel berikut:
ID
|
NAMA
|
TTL
|
TANGGAL MASUK
|
GRADE
|
DEPT
|
1
|
AGUNG
|
1969.11.08
|
1992.06.15
|
SM
|
IT
|
2
|
NOVIE
|
1978.11.30
|
1998.08.01
|
MG
|
IT
|
3
|
NURDIN
|
1975.06.01
|
1996.05.01
|
SV
|
IT
|
4
|
NANING
|
1966.02.01
|
1992.01.15
|
SM
|
HR
|
5
|
KIKI
|
1980.01.01
|
2011.01.01
|
SV
|
HR
|
6
|
DODI
|
1978.01.10
|
1995.01.11
|
AM
|
HR
|
7
|
SUGONO
|
1965.11.01
|
1995.01.11
|
MG
|
PUR
|
8
|
ARIF
|
1965.11.01
|
1996.01.01
|
AM
|
PUR
|
9
|
EDWIN
|
1980.11.01
|
2011.01.01
|
SV
|
PUR
|
10
|
HADI
|
1966.02.01
|
1998.01.01
|
SM
|
ACC
|
11
|
INDRA
|
1985.01.01
|
2012.01.01
|
SV
|
ACC
|
12
|
ISMAIL
|
1985.01.01
|
2012.01.01
|
ACC
|
b)
Tampilkan data semua
karyawan pada Departemen IT
c)
Tampikan data dengan
inisial A
d)
Display data yang ID nya
antara 6-10
e)
Display karyawan yang
tidak punya jabatan
f)
Drop tabel
**************
Listing Program
declare
nama varchar2(10);
it_id number;
it_name varchar2(10);
it_dob DATE;
it_hire_date DATE;
it_grade varchar(2);
it_dept_code varchar(3);
total_it number;
total_emp
number;
nul_grade
varchar2(3);
total_a
number;
a_id number;
a_name varchar2(10);
a_dob DATE;
a_hire_date DATE;
a_grade varchar(2);
a_dept_code varchar(3);
begin
select count(*) into total_emp from emp;
select count(*) into total_it from emp where dept_code='it';
for i in 1..total_it
loop
select id into it_id from emp where id=i;
select name into it_name from emp where id=i;
select dob into it_dob from emp where id=i;
select hire_date into it_hire_date from emp where id=i;
select dept_code into it_dept_code from emp where id=i;
select grade into it_grade from emp where id=i;
dbms_output.put_line('rincian karyawan IT
ID: ' || it_id || '-- Nama: '|| it_name || ' -- date of birth: '||
it_dob || ' -- hire date : ' ||
it_hire_date || ' --Grade : ' || it_grade ||' -- Departemen
Kode : ' || upper(it_dept_code));
end loop;
DBMS_OUTPUT.NEW_LINE;
for i in 1..total_emp
loop
if nul_grade is null then
select
id into it_id from emp where id=i;
select name into it_name from emp where id=i;
select dob into it_dob from emp where id=i;
select hire_date into it_hire_date from emp where id=i;
select dept_code into it_dept_code from emp where id=i;
select grade into it_grade from emp where id=i;
end if;
end loop;
dbms_output.put_line('rincian
karyawan yang grade nya null ID: ' || it_id || '-- Nama: '|| it_name || ' --
date of birth: ' || it_dob || ' -- hire date
: ' || it_hire_date || ' --Grade : ' || it_grade ||' -- Departemen
Kode : ' || upper(it_dept_code));
DBMS_OUTPUT.NEW_LINE;
for i in 6 ..10 loop
select id into a_id from emp where id=i;
select name into a_name from emp where id=i;
select dob into a_dob from emp where id=i;
select hire_date into a_hire_date from emp where id=i;
select dept_code into a_dept_code from emp where id=i;
dbms_output.put_line('rincian
karyawan 6-10: ' || a_id || '-- Nama: '|| a_name || ' -- date of birth: ' || a_dob || ' -- hire date : ' || a_hire_date || ' -- Departemen Kode :
' || upper(a_dept_code));
end loop;
DBMS_OUTPUT.NEW_LINE;
declare
k number(3);
prim_id number;
prim_name varchar2(10);
prim_dob DATE;
prim_hire_date DATE;
prim_grade varchar(2);
prim_dept_code varchar(3);
begin
k:=12;
for i in 1..k loop
if i in (2,3,5,7) then
select id into prim_id from
emp where id=i;
select name into prim_name
from emp where id=i;
select
dob into prim_dob from emp where id=i;
select hire_date into
prim_hire_date from emp where id=i;
select dept_code into prim_dept_code from emp
where id=i;
select grade into prim_grade
from emp where id=i;
dbms_output.put_line('rincian
karyawan IT ID: ' || prim_id || '--
Nama: '|| prim_name || ' -- date of birth: '|| prim_dob || ' -- hire date : ' || prim_hire_date || '
--Grade : ' || prim_grade ||' -- Departemen Kode : ' ||
upper(prim_dept_code));
end if;
if i not in (1,5,7) then
if mod(i,3)=0 or mod(i,6)=0 or mod(i,9)=0 then
null;
elsif mod(i,2)=0 or mod(i,4)=0 or mod(i,8)=0 then
null;
elsif mod(i,5)=0 or mod(i,10)=0 then
null;
elsif mod(i,7)=0 then
null;
else
select id into prim_id from emp where id=i;
select name into prim_name from emp where
id=i;
select dob into prim_dob from emp where id=i;
select hire_date into prim_hire_date from emp
where id=i;
select dept_code into prim_dept_code from emp
where id=i;
select grade into prim_grade from emp where
id=i;
dbms_output.put_line('rincian
karyawan IT ID: ' || prim_id || '--
Nama: '|| prim_name || ' -- date of birth: '|| prim_dob || ' -- hire date : ' || prim_hire_date || '
--Grade : ' || prim_grade ||' -- Departemen Kode : ' || upper(prim_dept_code));
end
if;
end if;
end loop;
end;
end;
Tampilan
hasil output program |
Listing
program menampilkan karyawan yang inisialnya A
declare
nama varchar2(60);
i_id
number;
i_name
varchar2(30);
i_dob
date;
i_hire_date
date;
i_grade
varchar2(30);
i_dept_code
varchar2(30);
itung
number;
sub varchar2(3);
begin
FOR a
IN 1..12 LOOP
select substr (name,1,1)into SUB FROM EMP
where id=a;
if
sub ='a' then
select id into i_id from emp where id=a;
select
name into i_name from emp where id=a;
select
dob into i_dob from emp where id=a;
select
hire_date into i_hire_date from emp where id=a;
select dept_code into i_dept_code from emp
where id=a;
select grade into i_grade from emp where id=a;
dbms_output.put_line('rincian karyawan
IT ID: ' ||i_id || '-- Nama: '|| i_name
|| ' -- date of birth: ' || i_dob || ' -- hire date : ' || i_hire_date || '
--Grade : ' || i_grade ||' -- Departemen Kode : ' ||
upper(i_dept_code));
dbms_output.new_line();--berfungsi
sebagai ENTER (garis baru)
end
if;
end
loop;
end;
tampilan
atau kalo mau dijadiin satu tiap program bisa juga (dengan sedikit modifikasi ya)
Listing program tabel employee
declare
nama
varchar2(10);
it_id
number;
it_name
varchar2(10);
it_dob
DATE;
it_hire_date
DATE;
it_grade
varchar(2);
it_dept_code
varchar(3);
total_it
number;
total_emp number;
nul_grade varchar2(3);
total_a number;
a_id
number;
a_name
varchar2(10);
a_dob
DATE;
a_hire_date
DATE;
a_grade
varchar(2);
a_dept_code
varchar(3);
begin
select count(*) into total_emp from emp;
select count(*) into total_it from emp where
dept_code='it';
for i in 1..total_it loop
select
id into it_id from emp where id=i;
select
name into it_name from emp where id=i;
select
dob into it_dob from emp where id=i;
select
hire_date into it_hire_date from emp where id=i;
select dept_code into it_dept_code from emp
where id=i;
select grade into it_grade from emp where
id=i;
dbms_output.put_line('rincian karyawan
IT ID: ' || it_id || '-- Nama: '||
it_name || ' -- date of birth: '
|| it_dob || ' -- hire date : ' || it_hire_date || '
--Grade : ' || it_grade ||' -- Departemen Kode : ' ||
upper(it_dept_code));
end loop;
DBMS_OUTPUT.NEW_LINE;
for i in 1..total_emp loop
if
nul_grade is null then
select id into it_id from emp where
id=i;
select
name into it_name from emp where id=i;
select
dob into it_dob from emp where id=i;
select
hire_date into it_hire_date from emp where id=i;
select dept_code into it_dept_code from emp
where id=i;
select grade into it_grade from emp where
id=i;
end if;
end loop;
dbms_output.put_line('rincian karyawan yang grade
nya null ID: ' || it_id || '-- Nama: '|| it_name || ' -- date of birth: '
|| it_dob || ' -- hire date : ' || it_hire_date || '
--Grade : ' || it_grade ||' -- Departemen Kode : ' ||
upper(it_dept_code));
DBMS_OUTPUT.NEW_LINE;
for i in 6 ..10 loop
select
id into a_id from emp where id=i;
select
name into a_name from emp where id=i;
select
dob into a_dob from emp where id=i;
select
hire_date into a_hire_date from emp where id=i;
select dept_code into a_dept_code from emp
where id=i;
dbms_output.put_line('rincian
karyawan 6-10: ' || a_id || '-- Nama: '|| a_name || ' -- date of birth: '
|| a_dob
|| ' -- hire date : ' || a_hire_date ||
' -- Departemen Kode : ' || upper(a_dept_code));
end
loop;
DBMS_OUTPUT.NEW_LINE;
declare
k number(3);
prim_id
number;
prim_name
varchar2(10);
prim_dob
DATE;
prim_hire_date
DATE;
prim_grade
varchar(2);
prim_dept_code
varchar(3);
begin
k:=12;
for i in 1..k loop
if
i in (2,3,5,7) then
select
id into prim_id from emp where id=i;
select
name into prim_name from emp where id=i;
select
dob into prim_dob from emp where id=i;
select
hire_date into prim_hire_date from emp where id=i;
select
dept_code into prim_dept_code from emp where id=i;
select
grade into prim_grade from emp where id=i;
dbms_output.put_line('rincian
karyawan IT ID: ' || prim_id || '--
Nama: '|| prim_name || ' -- date of birth: '
||
prim_dob || ' -- hire date : ' ||
prim_hire_date || ' --Grade : ' || prim_grade ||' -- Departemen
Kode : ' || upper(prim_dept_code));
end
if;
if
i not in (1,5,7) then
if
mod(i,3)=0 or mod(i,6)=0 or mod(i,9)=0 then
null;
elsif
mod(i,2)=0 or mod(i,4)=0 or mod(i,8)=0 then
null;
elsif
mod(i,5)=0 or mod(i,10)=0 then
null;
elsif
mod(i,7)=0 then
null;
else
select
id into prim_id from emp where id=i;
select
name into prim_name from emp where id=i;
select
dob into prim_dob from emp where id=i;
select
hire_date into prim_hire_date from emp where id=i;
select dept_code into prim_dept_code from
emp where id=i;
select
grade into prim_grade from emp where id=i;
dbms_output.put_line('rincian
karyawan IT ID: ' || prim_id || '--
Nama: '|| prim_name || ' -- date of birth: '
||
prim_dob || ' -- hire date : ' ||
prim_hire_date || ' --Grade : ' || prim_grade ||' -- Departemen
Kode : ' || upper(prim_dept_code));
dbms_output.new_line();
end if;
end
if;
end loop;
end;
declare
i_id
number;
i_name
varchar2(30);
i_dob
date;
i_hire_date
date;
i_grade
varchar2(30);
i_dept_code
varchar2(30);
itung
number;
sub
varchar2(3);
begin
FOR a IN
1..12 -- fungsi a(bisa diganti dengan nama apa saja) adalah sebagai
buffer(sebagai) view atau juga bisa sebagai tabel alisa
LOOP
select substr (name,1,1)into SUB FROM
EMP where id=a;
if sub ='a' then
select id into i_id from emp where
id=a;
select
name into i_name from emp where id=a;
select
dob into i_dob from emp where id=a;
select
hire_date into i_hire_date from emp where id=a;
select
dept_code into i_dept_code from emp where id=a;
select
grade into i_grade from emp where id=a;
dbms_output.put_line('rincian karyawan IT ID: ' ||i_id || '-- Nama: '|| i_name || ' --
date of birth: '
||
i_dob || ' -- hire date : ' ||
i_hire_date || ' --Grade : ' || i_grade ||' -- Departemen Kode
: ' || upper(i_dept_code));
end
if;
END LOOP;
end;
end;
Listing program tabel string
drop table string;
create table string
(
no
number,
text
varchar2(70)
);
insert into string values(1,'pt indorama ventures
indonesia');
insert into string values(2,'desa cihuni kecamatan
pagedangan kabupaten tangerang 15820');
insert into string
values(3,'www.indoramaventures.net');
insert into string values(4,'email admin@id.indorama.net');
commit;
select *from string;
declare
tot number;
init varchar2(100);
rep varchar2(100);
lpad varchar2(100);
rpad varchar2(100);
ascii varchar2(100);
repp varchar2(100);
lem varchar2(100);
awl number; jum number:=0;
akh varchar2(100); tota number;
begin
for i in 1..4 loop
select
length(text) into tot from string WHERE no=i;
dbms_output.put_line('total
karakter : ' || tot ||' Karakter'); --hitung jumlah karakter dari tiap record
end loop;
dbms_output.new_line();--berfungsi
sebagai ENTER (garis baru)
for i in 1..4 loop
select
initcap(text) into init from string WHERE no=i;
dbms_output.put_line('Karakter
Huruf Besar: ' || init);--membuat huruf pertama menjadi huruf besar
end loop;
dbms_output.new_line();--berfungsi sebagai
ENTER (garis baru)
for i in 1..4 loop
select
replace(text,' ') into rep from string WHERE no=i;
dbms_output.put_line('Buang
spasi: ' || rep); --membuang spasi
end loop;
dbms_output.new_line();--berfungsi sebagai ENTER (garis baru)
for i in 1..4 loop
select
lpad(text,70,'****'),rpad(text,70,'****') into lpad,rpad from string WHERE
no=i;
dbms_output.put_line('Bintang-bintang:
' || lpad|| rpad); --menambah bintang pada tiap record
end loop;
dbms_output.new_line();--berfungsi sebagai
ENTER (garis baru)
for i in 1..4 loop
select
ascii(text) into ascii from string WHERE no=i;--ini jika menggunakan ascii
sehingga yang diambil hanya ascii dari karakter pertama dan yang lain diabaikan
dbms_output.put_line('ASCII:
' || ascii);
end loop;
dbms_output.new_line();--berfungsi sebagai
ENTER (garis baru)
for i in 1..4 loop
select
asciistr(text) into ascii from string WHERE no=i;--ini jika menggunakan
asciistr dan tidak ada perubahan pada string
dbms_output.put_line('ASCII:
' || ascii);
end loop;
dbms_output.new_line();--berfungsi sebagai ENTER (garis baru)
for i in 1..4 loop
select
replace(text,' ','-') into rep from string WHERE no=i;
dbms_output.put_line('Pake
tanda - : ' || rep); --mengganti spasi
dengan tanda -
end loop;
dbms_output.new_line();--berfungsi sebagai
ENTER (garis baru)
for i in 1..4 loop
select
replace(text,'a') into akh from string where no=i;
dbms_output.put_line('tanpa
a : ' || akh); --menghapus hiruf A
end loop;
dbms_output.new_line();--berfungsi sebagai
ENTER (garis baru)
declare
itung number;
BEGIN
FOR a IN (
SELECT nama ,
length(replace(translate(lower(nama),'abcdefghijklmnopqrstuvwxyz0123456789
,.
FROM
b)-- fungsi a(bisa diganti dengan nama apa saja) adalah sebagai buffer(sebagai)
view atau juga bisa sebagai tabel alisa
LOOP
dbms_output.put_line ('Text : '||a.nama || ' Jumlah A ada '|| a.itung);
END LOOP;
--oleh karena itu ketika pemanggilan nama harus menggunakan tanda titik dengan
forman x.variabel nya.
dbms_output.new_line();--berfungsi sebagai ENTER (garis baru)
END;
end;
tampilan
liat program penghitung huruf A (bagian akhir ditampilan)
program itu (liat di listing program tabel string) bisa juga buat menghitung huruf lain / karakter lain juga dan menampilkannya di DBMS_OUTPUT yah, tinggal diganti aja pas bagian 'a' dengan karakter apa yg mau dicari.
oke sekian postingan kali ini
semoga bermanfaat
^_^
Tidak ada komentar:
Posting Komentar