Selasa, 16 Mei 2017

Wisuda...

Hari yang di nanti - nanti akhirnya tiba juga yaitu sebenernya bulan januari udah wisuda tetapi tertunda jadinya bulan April 2017 baru wisuda..Yeaaye.. Walaupun gak cum laude -__- tapi sudah sangat bersyukur dapat menyelesaikan kuliah tidak terlalu molor.
Akhirnya kata terima kasih buat istriku tercinta Bunda Ratu Indah Lesatri, 2 jagoan kecilku yang sering ditinggal pulang malem Muhammad Ghaizan Atharkavi dan Muhammad Zayyan Saviohaki atas semua pengertian dan doanya yang selalu untuk ayahmu tercinta. Selanjutnya orang tua tercinta Bapak, Ibu Ayah, Mama, kakak dan Ade semua atas dukungan dan doanya dalam menyelesaikan kuliah ini. Love u all...

Akhirnya selesai juga menimbang ilmu Management di UGM

Saya di sini mencoba bercerita awal dan akhirnya saja ya sudah lama tidak menulis. Sebenernya perjalanan panjang ini bukan merupakan akhir, tapi mungkin awal menuju tingkat selanjutnya. Dari awal matrikulasi bulan September 2013, terus sampai Februari 2014 memulai semester 1 yang banyak penyesuaian dari yang hanya kerja biasa langsung pulang ke rumah tapi sekarang harus ke kampus. Kadang setiap hari dari senin sampe jumat ke kampus dan juga weekend ngerjain tugas kelompok..hehehe.. Selanjutnya semester akhir, awal 2016 merupakan semester yang agak mendebarkan karena terkait pembuatan Thesis. Awalnya cukup banyak kendala terkait cukup sulit bertemu dengan Dosen Pembimbing yang berdomisili di jogja. Apalagi banyak dari temen-temen yang udah mulai bimbingan sedangkan saya belum mulai. Perasaan tegang dan merasa ketinggalan mulai terasa. Seiring berjalannya waktu, akhirnya akhir April 2016 saya pun memulai bimbingan awal dengan pemilihan judul. Ternyata Dosen Pembimbing Saya Bapak Ertambang Natartyo, M.sc, CMA, Ak, CA, Phd sangat bijaksana dan baik banget menerima anak bimbingannya. Masukan dan bimbingannya membuat mahasiswa tidak tertekan dan malah bisa mengeluarkan maksud tujuannya, Pokoknya pak Ertambang Top Markotop deh se Fakultas Ekonomikan dan Bisnis UGM.
Akhir kata setelah bimbingan akhir dari juli sampe November, saya hanya miss bulan september gak bimbingan malah ke hongkong tapi alhamdulilah bisa via email revisi diterima, sampe hari sidang thesis tanggal 14 Desember 2016 dan Dinyatakan lulus. Itu rasa Alhamdulillah WoW banget, lepas semua Beban. Suka dan duka itu pasti, tapi InsyaAlloh banyak sukanya daripada dukanya. yuks ahh kita kuliah lagi..

Rabu, 07 Mei 2014

Belajar, Karier dan Keluarga

Sudah lama banget gw gak nulis blog ini lagi terlalu sibuk didunia nyata mungkin..(alesan membela diri apalah lagi gak kreatif) ..hahaha...


Pertama yang gw mau tulis adalah akhir 2013 ini gw akhirnya nerusin mengambil kuliah lagi di bidang management..wow..awalanya agak ragu karena mau ngambil teknik lagi apa management. Pengen ngambil Sistem informasi bisnis nerusin kuliah S1 gw dlu tapi sepertinya management lebih menarik bagi gw dan merupakan ilmu baru. 6 Bulan pertama disi dengan matrikulasi 4 mata kuliah : Statistik, Pengenalan Bisnis, Strategi ekonomi dalam pengambilan keputusan manajer dan Pengenalan Manajemen Keuangan.


Jujur awalnya agak aneh tapi lama kelamaan ternyata mengasikkan apalagi sudah lama gak kuliah lagi setelah lulus pada tahun 2007. Ekonomi dan ilmu management sangat membuka wacana gw dalam dunia kerja, belajar bisnis dan perekonomian secara global. Akhirnya masa matrikusi cukup dilalui dengan hasil yang agak memuaskan walaupun jauh dari target tapi its okay lah bagi pemula. hahaha..


Sekarang gw masih menjalanin semester 1 di MM UGM Jakarta dari akhir februari 2014 sampai juni 2014 ini. Tetep ada 4 mata kuliah yang harus dilalui yaitu : Business Law, Marketing Management, Financial Management dan Organization Behavior. So far sih gak terlalu ada kendala paling hanya financial management aja. Pengen banget ngerti masalah Financial tapi keburu takut sama sang Profesor jadinya ngambang deh..hiksss..


Oke sedikit share gw tentang pengalaman kuliah lagi sambil kerja plus udah berkeluarga ternyata emang musti pinter-pinter bagi waktu agak belajar, karier dan keluarga tetep fokus dan gada yang terabaikan. Salam Daka...(itu istilah anak gw yang belum terungkap..hahaha)





Kamis, 25 April 2013

Commit, Rollback dan SavePoint dalam Oracle


COMMIT


Perintah ini selain secara eksplisit digunakan oleh user database juga secara implisit digunakan oleh ORACLE sendiri. Contohnya adalah ketika user keluar secara normal dari program - program utility product ORACLE seperti SQL*Plus dengan menjalankan perintah DISCONNECT.
        
         Bentuk umum perintah COMMIT adalah sebagai berikut :


COMMIT [COMMENT 'text'];


Kata kunci COMMENT digunakan untuk menambahkan komentar. Komentar tsb akan disimpan dalam data dictionary apabila terjadi kegagalan pada jaringan (network) atau mesin yang menyebabkan perintah COMMIT gagal untuk dijalankan sebagaimana mestinya. Berikut ini adalah kondisi data pada transaksi setelah perintah COMMIT dijalankan: 

Ö    Data dirubah secara permanen sesuai dengan operasi DML (Data   
       Manupulation language)
Ö    Semua user dapat melihat semua hasil perubahan-perubahannya.
Ö   Baris-baris yang semula terkunci, akan terbuka kembali sehingga user yang   
      lain dapat melakukan operasi DML.
                                                   
         ROLLBACK

Statemen ROLLBACK digunakan untuk membatalkan operasi DML sehingga data dikembalikan pada kondisi sebelum operasi DML dilakukan.

Bentuk umum dari perintah ROLLBACK adalah seperti berikut ini :


ROLLBACK [TO [SAVEPOINT] savepoint_name];


        
Perlu diperhatikan, bahwa selain secara ekplisit digunakan oleh user skema database juga secara implisit digunakan oleh ORACLE sendiri (lihat juga bahasan perintah COMMIT sebelumnya).
                
Secara automatically, ORACLE akan menjalankan perintah ROLLBACK manakala terjadi hal-hal seperti berikut ini :

         Ö    User keluar dari program utility ORACLE secara tidak normal.
         Ö    User keluar dari program aplikasi lainnya tanpa menjalankan perintah commit 
                secara eksplisit.
         Ö    Sistem mengalami Crash.
           

         SAVEPOINT
        
Savepoint digunakan untuk membagi sebuah transaksi menjadi beberapa tahapan atau bagian-bagian sekaligus memberi nama atau tanda pada bagian tsb.
        
         Bentuk umum dari perintah statemen SAVEPOINT adalah seperti berikut ini :


SAVEPOINT savepoint_name;


         Perhatikan contoh-contoh berikut ini :

Perlu diperhatikan juga bahwa jika perintah COMMIT telah dijalankan maka transaksi tersebut telah mengalami perubahan secara permanen (secara fisik) dan juga semua tanda SAVEPOINT yang telah dibuat akan ikut terhapus. Bagaimana jika perintah SAVEPOINT tetap dijalankan? Maka jawabannya adalah ORACLE akan menampilkan pesan error.






       


Rabu, 24 April 2013

Gila Jabatan dan Dukun Palsu

Hampir setahun lebih gak nulis di blog lagi (seolah-olah sibuk padahal males -_-). Ini gw nulis lagi karna  terinspirasi lagi gara-gara Inesa bikin blog #Baca gak mau kalah, hahaha..

Sekarang gw coba sedikit shraing mengenai kejadian - kejadian lucu di negeri tercinta ini. Dari SBY turun gunung jadi Ketum partainya sampe Eyang subur yang katanya sakti ternyata tua rentaa #eehh. Pertama gw bahas SBY dlu deh yang klo gw liat ternyata gila Jabatan dan gelar. Kok bisa-bisanya seorang Presiden yang tugasnya seabrek-abrek mau ngurus partai, mentang-mentang rakyat bisa urus dirinya sendiri (Udah gak punya presiden kali yaa). lalu yang terakhir SBY dapet gelar HC dari Universitas NTU Singapura yang notabene kampusnya David yang memiliki kasus dengan profesornya dan dinyatakan bunuh diri #sepertinya dihilangkan nyawanya. Kenapa SBY mau menerima ketika anak bangsa dizholimi seperti itu. Tapi sudahlah semua orang juga tau klo SBY emang gila jabatan dan peragu, padahal peragu temannya atau sahabatnya setan, iihh seremm.

Topik kedua yang banyak menghiasi berita online maupun tv adalah eyang subur (nama orang harusnya huruf besar tapi gw gak mau tulis besar karena menurut gw ini bukan orang sepertinya), hihihi. Lucu banget ya ada kakek kayak gini istrinya bisa ampe 8 orang padahal tua dan kempot. Banyak Joke yg beredar dibbm tentang gmana cara subur untuk mengurangi istrinya menjadi 4 saja sesuai rekomendasi MUI yaitu melalui SMS Voting, hahaha macam Indonesia Idol. Ngemeng-ngemeng  Trus kok bisa aja ya artis yg kebanyakan pelawak bisa jadi pengikutnya, gak habis pikir gmana si subur merekrutnya (cocok sebagai marketing nih si tua keladi). Dan sekarang syukur alhamdulilah udah terungkap praktek perdukunannya dan semoga cepet tobat sebelum mati.

Udah segini dlu cerita 2 fenomena alam yang agak janggal dan menggelikan hati nurani (bahasanya sok banget walau gak setajam silett)...Piss

Senin, 16 April 2012

ARRAY Dalam PL/SQL Oracle

Array adalah tipe data bentukan yang dapat menyimpan sekumpulan nilai dari tipe data yang sama dan dikemas dalam bentuk larik.  Nilai dari elemen-elemen array dapat diakses melalui indeksnya.  

Membuat Tipe Array

TYPE nama_tipe IS
           TABLE OF tipe_data
           INDEX BY BINARY_INTEGER;

Keterangan :
nama_tipe = nama array yg didefinisikan
tipe_data   = berfungsi utk mendeklarasikan tipe dari kumpulan
                      data yg akan disimpan didalam array
INDEX BY BINARY_INTEGER = berfungsi untuk menunjukkan bahwa
                                                         array tsb akan di indeks

Contoh mendeklarasikan type data Array dengan nama Array_coba sebagai kumpulan dari tipe data CHAR :

DECLARE
TYPE Array_coba IS 
           TABLE OF CHAR(n)  -- n : banyaknya karakter
           INDEX BY BINARY_INTEGER;

Misalkan kita akan mendaklarasikan variable X yang bertipe Array_coba, sintaknya adalah sebagai berikut :

Declare
    X  Array_coba;

Mengisi Nilai pada Elemen Array

BEGIN
    X(1) := ‘A’;
    X(2) := ‘B’; 
END;
   
Contoh 1 a. :

SET SERVEROUTPUT ON
DECLARE
   TYPE LARIK IS
        TABLE OF NUMBER
   INDEX BY BINARY_INTEGER;
        A LARIK;
BEGIN
-- Melakukan pengisian terhadap elemen-elemen array
        A(1) := 10;      A(2) := 20;
        A(3) := 30;      A(4) := 40;
       -- Menampilkan elemen array ke layar
        DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-1' || '='
                           ||TO_CHAR(A(1)));
        DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-2' || '='
                           ||TO_CHAR(A(2)));
      DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-3' || '=' 
                           ||TO_CHAR(A(3)));
END;
/

Bandingkan dengan contoh 1.b. berikut ini :

SET SERVEROUTPUT ON
DECLARE
    TYPE LARIK IS
         TABLE OF NUMBER
         INDEX BY BINARY_INTEGER;
       
       A LARIK;
       I integer;
  
BEGIN
     FOR i IN 1..5 LOOP
               A(i):=i*10;
           DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-'
                          ||i||'='|| TO_CHAR(A(i)));
     END LOOP;   
END;
/

Perhatikan contoh tsb diatas akan menghasilkan tampilan seperti berikut ini :

Contoh 2.

SET SERVEROUTPUT ON
DECLARE 
TYPE SISWA IS
     TABLE OF VARCHAR2(20)
     INDEX BY BINARY_INTEGER;
               
     NAMA SISWA;
     I    integer;
BEGIN   
     NAMA(1):='ANDI';NAMA(2):='BURHAN';NAMA(3):='CANDRA'; 
     NAMA(4):='ERMAN'; NAMA(5):='FARID';NAMA(6):='GUNAWAN';
     FOR i IN 1..6 LOOP
           DBMS_OUTPUT.PUT_LINE('Nama Siswa ke-        
            '||i||'='||TO_CHAR(NAMA(i)));
     END LOOP;   
END;

Contoh 3
Mengurutkan Data pada Elemen Array
Anda diminta utk mengurutkan data-data yg tersusun secara acak pada sebuah array dgn menggunakan blok PL/SQL. Data yg dimaksud adalah :

      544, 78, 565, 23, 4       
       
SET SERVEROUTPUT ON
DECLARE
TYPE LARIK IS
     TABLE OF NUMBER
     INDEX BY BINARY_INTEGER;

     X        LARIK;
     Temp     NUMBER;
     idx_max  NUMBER;
     i      BINARY_INTEGER;
     y        BINARY_INTEGER;
   
BEGIN  
     X(1) := 544;  X(2) := 78;
     X(3) := 565;  X(4) := 23;   X(5) := 4;

     DBMS_OUTPUT.PUT_LINE('Sebelum di-urutkan : ');
     ----------------------------------------------
     FOR i IN 1..5 LOOP
         DBMS_OUTPUT.PUT_LINE('X('||i||') = '||
                               TO_CHAR(X(i)));
     END LOOP; 
----------------------------------------------
     y:=5;
     WHILE (y>=2) LOOP
            idx_max:=1;
            i:=2;
      WHILE(i<=y) LOOP
           IF X(idx_max) < X(i) THEN
                 idx_max:=i;
            END IF;
        i:=i+1;
     END LOOP;
     temp:=x(idx_max);
     X(idx_max):=X(y);
     X(y):=temp;
     y:=y-1;
  END LOOP;
  ---------------------------------------------------------
  DBMS_OUTPUT.PUT_LINE(' ');
  DBMS_OUTPUT.PUT_LINE('Setelah di-urutkan : ');
  FOR i IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE('X('||i||') = ' || TO_CHAR(X(i)));
  END LOOP;           
  --------------------------------------------------------- 
END;
/         

Sama dengan contoh kasus diatas, tetapi menggunakan metode lain :

SET SERVEROUTPUT ON
DECLARE
      TYPE LARIK IS
     TABLE OF NUMBER
     INDEX BY BINARY_INTEGER;

     X       LARIK;
     TEMP    NUMBER;
     K       BINARY_INTEGER;
     I       BINARY_INTEGER;
     N       BINARY_INTEGER;
   
BEGIN

     X(1) := 544; X(2) := 78;
     X(3) := 565; X(4) := 23;    X(5) := 4;
     DBMS_OUTPUT.PUT_LINE('Sebelum di-urutkan : ');
     --------------------------------------------------------
     FOR I IN 1..5 LOOP
           DBMS_OUTPUT.PUT_LINE('X('||I||') = ' || TO_CHAR(X(I)));
     END LOOP; 
 ----------------------------------------------------------
 --PROSES PENGURUTAN
   I:=1;
   N:=5;
   WHILE (I<=N-1) LOOP
       K:=N;
       WHILE (K>I) LOOP
           IF X(K)<X(K-1) THEN
              TEMP:=X(K-1);
              X(K-1):=X(K);
              X(K):=TEMP;
          END IF;
          K:=K-1;
       END LOOP;
       I:=I+1;
   END LOOP;
   DBMS_OUTPUT.PUT_LINE(' ');
   DBMS_OUTPUT.PUT_LINE('Setelah di-urutkan : ');
   FOR I IN 1..5 LOOP
       DBMS_OUTPUT.PUT_LINE('X('||I||') = ' ||TO_CHAR(X(I)));
   END LOOP;           
   DBMS_OUTPUT.PUT_LINE(' ');
END;
/       

Pengulangan dalam PL/SQL


Didalam Oracle ada 3 struktur pengulangan, yaitu :
1. Simple Loop
2. While-Loop
3. For-Loop.

Struktur Pengulangan

1. Simple Loop
    Sintaks umum penulisan simple Loop adalah:
       
    LOOP
            statemen_1,
        …
            EXIT WHEN kondisi_1;
     END LOOP;

2.  While Loop
     Sintaks umum penulisan While Loop adalah:

      WHILE kodisi_1 LOOP
    statemen_1,
    ...
      END LOOP

3.  For Loop
     Sintaks umum penulisan For Loop adalah:

     FOR kodisi_1 LOOP
      statemen_1,
      ...
     END LOOP
       
Contoh Pengulangan
Contoh 1:
Mencetak kalimat 'Sukses dgn Oracle' Sebanyak 10 kali.

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
    i integer;
BEGIN   
    i:=0;
    LOOP
        i:=i+1;
        DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
        EXIT WHEN i=10;
    END LOOP;
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
      i integer;
BEGIN
      i:=0;
      WHILE (i<=10) LOOP
           DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
           i:=i+1;
      END LOOP;
END;


= Struktur FOR LOOP =
SET SERVEROUTPUT ON
DECLARE
      i integer;
BEGIN
      FOR i IN 1..10 LOOP
    DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
      END LOOP;
END;
/

Perhatikan script-script diatas,
●    SERVEROUTPUT    :  variable system
●    DBMS_OUTPUT     :  package
●    PUT_LINE    :    :  procedure

Contoh 2:
Melakukan penjumlahan deret angka (2+4+… +(n+2))

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
    jumlah    integer;
    K         integer;
BEGIN
    jumlah:=0;
    K:=2;
    LOOP
        JUMLAH:=jumlah+K;
        K:=K+2;
        EXIT WHEN K>18;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :'||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
    jumlah   integer;
    K        integer;
BEGIN
    jumlah:=0;
    K:=2;
    WHILE (K<=18) LOOP
           jumlah:=jumlah+K;
           k:=k+2;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :'||JUMLAH);
END;
/

= Struktur FOR LOOP =
SET SERVEROUTPUT ON
DECLARE
     i          integer;
     jumlah    integer;
     K              integer;
BEGIN
     jumlah:=0;
     K:=2;
     FOR i IN 1..(18/2) LOOP
         jumlah:=jumlah+K;
         k:=k+2;  
     END LOOP;
     DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :' ||JUMLAH);
END;
/  

Contoh 3:
Melakukan penjumlahan deret bilangan ganjil 1+3+5..+11

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
      Jumlah   integer;
     K        integer;
BEGIN
     jumlah:=0;
     K:=1;
     LOOP
        JUMLAH:=jumlah+K;
        K:=K+2;
        EXIT WHEN K>11;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah :'||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
    Jumlah  integer;
    K       integer;
BEGIN
    jumlah:=0;
    K:=1;
    WHILE (K<=11) LOOP
          jumlah:=jumlah+K;
          k:=k+2;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah :'||JUMLAH);
END;


= Struktur For LOOP =  
SET SERVEROUTPUT ON
DECLARE
     I       integer;
     jumlah  integer;
     K       integer;
BEGIN
     jumlah:=0;
     K:=1;
     FOR i IN 1..6 LOOP
         jumlah:=jumlah+K;
        k:=k+2;  
     END LOOP;
     DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah:'||JUMLAH);
END;
/
   
Contoh 4:
Menjumlahkan sejumlah deret ukur 2+4+16+256

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
      jumlah   integer;
      K        integer;
BEGIN
      jumlah:=0;
      K:=2;
      LOOP
          JUMLAH:=jumlah+K;
          K:=K*k;
          EXIT WHEN K>256;
      END LOOP;
      DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :' ||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON 
DECLARE
       jumlah     integer;
       K            integer;
BEGIN
      jumlah:=0;
       K:=2;
       WHILE (K<=256) LOOP
            JUMLAH:=jumlah+K;
            K:=K*k;
       END LOOP;
       DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :' ||JUMLAH);
END;


= Struktur FOR LOOP =
SET SERVEROUTPUT ON 
DECLARE
     I       integer;
     Jumlah  integer;
     K       integer;
BEGIN
     jumlah:=0;
     K:=2;
     FOR i IN 1..4 LOOP
     JUMLAH:=jumlah+K;
     K:=K*k;
     END LOOP;
   DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :'||JUMLAH);
END;
/

     

     i:=10;
     FOR i IN REVERSE 1..10 LOOP
         DBMS_OUTPUT.PUT_LINE(TO_CHAR(i));
     End loop;
END;
/