Selasa, 04 November 2014

Fungsi-Fungsi Pada String Oracle PL-SQL

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

output program menggunakan DBMS_OUTPUT


Listing Program Penghitung huruf A melalui tabel tiap record


--drop table t;--diaktifin kalo kamu compile berulang2 
create table t (data1 varchar2(100)) ;

insert into t values('pt indorama ventures indonesia');
insert into t values('desa cihuni kecamatan pagedangan kabupaten tangerang 15820');
insert into t values('www.indoramaventures.net');
insert into t values('email admin@id.indorama.net');
commit;

select data1, length(data1)-length(replace(data1,'a','')) from t;


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;


 Tampilan 








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