Minggu, 13 November 2011

ADO.NET dan Connected Application

NIM / Nama: 10.41010.0224 / Filzah Apritasari
Dosen          :  Tan Amelia
Tugas          :  ADO.NET dan Connected Application


ADO.NET adalah teknologi akses data dari Microsoft .Net Framework. Yang menyediakan komunikasi antara sistem relasional dan non-relasional melalui seperangkat komponen. ADO.NET terdiri dari serangkaian Objek yang mengekspos layanan akses data ke lingkungan NET. ADO.NET dibangun untuk arsitektur terputus, sehingga memungkinkan benar-benar terputus dengan sumber data dapat dilakukan manipulasi melalui Objek Dataset, yang benar-benar independen dari Sumber Data (database)
Dua komponen kunci dari ADO.NET adalah Data Providers dan DataSet. Di dalam .Net Framework terdapat tiga Penyedia untuk Akses Data. Yaitu Microsoft SQL Server Data Provider, OLEDB Data Provider dan ODBC Data Providers. SQL Server menggunakan obyek SqlConnection, OLEDB menggunakan Objek OleDbConnection dan ODBC menggunakan OdbcConnection.
Mengenal Objek-objek ADO.NET 
Objek ADO.NET menyediakan kemudahan dan kecepatan akses pada semua jenis data.
  • Objek Connection membuat hubungan antara aplikasi windows kita dan sumber data luar, seperti SQL Server atau Data MS-Access. Objek ini juga menyediakan mekanisme untuk mengadakan hubungan, melakukan pencarian dan melakukan transaksi. Ini adalah objek yang paling tinggi levelnya pada model Objek ADO.NET

  • Objek Command dipergunakan untuk melakukan pencarian, termasuk parameter khsus yang dimasukkan oleh pemakai, mengakses rekaman dati sumber data. Pada umumnya, rekaman-rekaman ini dikembalikan dalam bentuk Objek Table. Objek command dibuat dari tabel basis data, query yang tersimpan atau Query Bahasa Pencarian Terstruktur/Structured Query Language (SQL).


  • DataAdapter 
    Melalui DataAdapter ini kita dapat mengambil data rekaman dengan langsung memberikan perintah SQL maupun melalui objek Command.
  • DataSet
DataSet memberikan representasi terputus hasil query dari Sumber Data, dan itu benar-benar independen dari Sumber Data(database). DataSet memberikan fleksibilitas jauh lebih besar ketika berhadapan dengan manipulasi data. DataSet terdiri dari kumpulan objek DataTable yang dapat berhubungan satu sama lain dengan DataRelation. DataTable berisi koleksi DataRow dan DataCoulumn. Objek DataAdapter menyediakan sebuah jembatan antara DataSet dan Sumber Data.

Table
Objek Recordset tidak dipergunakan lagi pada ADO.NET sebagai gantinya kita akan memakai object Table yang terdapat di dalam Dataset untuk mengakses rekaman-rekaman yang dikembalikan dari query SQL. Anda mempergunakan Objek Table untuk menyajikan data kepada pemakai. Objek Table ini berisi rekaman (record) yang dapat langsung dipergunakan untuk megisi gridview atau textbox. Objek table ini terdapat di dalam dataset.
Connected Application
Sql Connection
Standar : “Data Source=MyComputer;” & _ “Initial Catalog=pubs;” & _ “User Id=sa Password=abcd;”
Trusted Connection : “Data Source=MyComputer;” & _ “Initial Catalog=pubs;” & _ “Integrated Security=TRUE;”
Oracle Connection
“Data Source=MyOracleDB;” & _ “User Id=username;Password=passwd;” & _ “Integrated Security=no;”
Opening dan Closing Connections
Opening: method yang menggunakan informasi dalam koneksinya untuk menghubungkan sumber data dan membentuk sebuah koneksi
Closing: method yang digunakan untuk menutup koneksi
SQL Command
SQl command adalah sebuah objek yang digunakan untuk menentukan interaksi yang ingin digunakan dalam database
Contoh: dapat melaukakn select, insert, modify, dan delete commands pada baris dalam table database
SQL Commands Methods
ExecuteNonQuery: menjalankan data command tapi tidak mengembalikan nilai,                      melakukan perintah seperti update, Insert, deleted, dan get by id
ExecuteScalar: ketika query database mengembalikan nilai tunggal
ExecuteReader: ketika query database menyediakan satu set catatan

Selasa, 01 November 2011

Artikel Pentingnya Perilaku Organisasi Dalam Membentuk SDM Yang Handal Dan Memiliki “Need for Achievement”

Untuk membentuk SDM yang handal dalam perilaku organisasi tidak bisa langsung terbentuk begitu saja kita harus melakukan beberapa tahapan terlebih dahulu. SDM yang handal terbentuk dari nilai – nilai yang harus dipatuhi, karena nilai memberikan dasar pengertian tentang sikap dan motovasi seseorang dan mempengaruhi persepsi dalam memandang suatu hal atau sikap. Sumber system nilai berasal dari genetic (bawaan), budaya, dan lingkungan. Apabila sumber – sumber nilai tersebut tidak mendukung maka terbentuknya SDM yang handal dan memiliki need for achievement akan susah terbentuk.

Motivasi juga salah satu hal yang dibuthkan untuk membentuk SDM yang handal dan memiliki need for achievement. Karena menurut teori motivasi dari Frederick Herzberg kondisi ekstrinsik(bersifat sebagai hygiene factors) berfungsi mencegah timbulnya ketidakpuasan. Factor ini meliputi kondisi dalam organisasi seperti upah, jaminan pekerjaan, kondisi kerja, status, dan hubungan dengan atasan, bawahan dan antar rekan kerja. Kondisi intrinsik juga sangat berpengaruh sekali bersifat sebagai factor untuk memotivasi. Yang berfungsi menggerakkan tingkat motivasi yang kuat dan dapat menghasilkan prestasi kerja yang baik pada karyawan, tetapi bila tidak ada maka tidak akan timbul ketidakpuasan yang berlebihan.
Inovasi juga diperlukan dalam membentuk SDM yang handal dan memiliki need for achievement karena inovasi adalah adaptasi menuju perubahan dan satu langkah lebih maju yang merupakan kunci menghadapi kegagalan. Mental juga sangat penting karena apabila kita belum bisa mencapai apa yamg kita inginkan kita tidak mudah putus asa dan akan terus mencoba sampai apa yang kita inginkan terwujud, apabila mental kita mudah down mungkin kita tidak akan bisa sampai pada apa yang kita tuju.

“Kita itu harus lebih dinamis berkreasi, kreatif, dan mampu merealisasikan impian dengan daya juang tinggi. Memiliki mental yang kuat itu sangat penting. Tidak mudah berhenti dan menyerah di tengah jalan. Lalu milikilah inisiatif dan ambisi untuk berhasil dengan tujuan memberi manfaat untuk orang lain, seperti contohnya membuka lapangan kerja dan member inspirasi bagi orang lain untuk melakukan hal yang sama.” (Kata – kata tersebut saya kutip dari pengusaha maestro franchise Kebab Turki Baba Rafi, -Hendi Setiono)  

Minggu, 02 Oktober 2011

Sistem Operasi

Linux
Pengguna komputer di indonesia saat ini kebanyakan menggunakan sistem operasi buatan dari microsoft, yaitu microsoft windows. Hal itu wajar saja terjadi, karena sistem operasi windows lebih dulu hadir di Indonesia ketimbang sistem operasi linux. Mungkin anda semua yang telah mengerti tentang komputer, sudah memahami bahwa sistem operasi windows bukanlah software yang bebas disebarluaskan, anda harus mengeluarkan biaya lisensi untuk bisa menginstal secara legal di komputer anda, tapi jika anda tidak mengeluarkan biaya lisensi, berarti bisa dikatakan windows yang anda gunakan adalah bajakan.
Linux adalah software sistem operasi open source yang gratis untuk disebarluaskan di bawah lisensi GNU. Jadi anda diijinkan untuk menginstal pada komputer anda ataupun mengkopi dan menyebarluaskannya tanpa harus membayar. linux merupakan turunan dari unix dan dapat bekerja pada berbagai macam perangkat keras koputer mulai dari inter x86 sampai dengan RISC. Dengan lisensi GNU (Gnu Not Unix) Anda dapat memperoleh program, lengkap dengan kode sumbernya (source code). Tidak hanya itu, anda diberikan hak untuk mengkopi sebanyak anda mau, atau bahkan mengubah kode sumbernya. Dan itu semua legal dibawah lisensi. Meskipun gratis, lisensi GNU memperbolehkan pihak yang ingin menarik biaya untuk penggandaan maupun pengiriman program.
Kebebasan yang paling penting dari Linux, terutama bagi programmer dan administrator jaringan, adalah kebebasan untuk memperoleh kode sumber (source code) dan kebebasan untuk mengubahnya. Ini berimplikasi pada beberapa hal penting. Pertama keamanan, yang kedua dinamika.
Jika perangkat lunak komersial tidak memperkenankan Anda untuk mengetahui kode sumbenya maka Anda tidak akan pernah tahu apakah program yang Anda beli dari mereka itu aman atau tidak (sering disebut security by obscurity). Hidup Anda di tangan para vendor. Dan jika ada pemberitahuan tentang bug dari perangkat lunak komersial tersebut, seringkali sudah terlambat. Dengan Linux, Anda dapat meneliti kode sumbernya langsung, bersama dengan pengguna Linux lainnya. Berkembangnya pengguna Linux sebagai komunitas yang terbuka, membuat bug akan cepat diketahui, dan secepat itu pula para programmer akan memperbaiki programnya. Anda sendiri juga yang menentukan kode yang cocok sesuai dengan perangkat keras maupun kebutuhan dasar perangkat lunak lainnya untuk dapat diimplementasikan. Ibarat sebuah mobil, Anda bisa memodifikasi sesukanya, bahkan hingga mesin sekalipun, untuk memperoleh bentuk yang diinginkan.
Keterbukaan kode sumber juga memungkinkan sistem operasi berkembang dengan pesat. Jika sebuah program dengan sistem tertutup dan hanya dikembangkan oleh vendor tertentu, paling banyak sekitar seribu hingga lima ribu orang. Sedangkan Linux, dengan keterbukaan kode sumbernya, dikembangkan oleh sukarelawan seluruh dunia. Bug lebih cepat diketahui dan program penambalnya (patch) lebih cepat tersedia. Pendekatan pengembangan sistem operasi ini disebut Bazaar. Kebalikannya sistem Chatedraal sangat tertutup dan hanya berpusat pada satu atau dua pengembang saja.
Linux saat ini telah berkembang menjadi banyak distro (distribusi linux), misalnya adalah distro Redhat, Debian, Suse. Saat ini distro linux yang sangat populer di gunakan di indonesia adalah distro Ubuntu yang merupakan turunan dari Debian.



Perintah Dasar pada Linux

alias  : Untuk membuat alias dan menampilkan alias yang sudah diset sebelumnya. Alias digunakan untuk memudahkan agar tidak harus mengetikkan perintah yang panjang, tapi cukup aliasnya saja. Misalnya bila Anda ingin perintah ls dapat juga dijalankan dengan mengetikkan perintah dir, maka buatlah aliasnya
cp: Copy, untuk melakukan proses copy file
&: Perintah & digunakan untuk menjalan perintah di belakang (background) Perintah & dipakai dibelakang perintah lain untuk menjalankannya di background. Apa itu jalan di background? Jalan dibackground maksudnya adalah kita membiarkan sistem untuk menjalankan perintah sendiri tanpa partisipasi kita, dan membebaskan shell/command prompt agar bisa dipergunakan menjalankan perintah yang lain.
chmod: Untuk mengganti perijinan pada file atau direktori. Anda dapat menggunakan sistem numeric coding atau sistem letter coding.

chown: Mengganti kepemilikan atas file atau direktori

Syntax : chown [options] username:groupname

chgrp: Untuk mengganti grup pemilik suatu file atau direktori
Syntax : chgrp [options] groupname

clear: Untuk membersihkan tampilan layar monitor
Syntax : clear
Note : untuk melakukan clear dengan cepat, Anda dapat menggunakan kombinasi tombol CTRL + L

cat: Menampilkan isi dari suatu file
Syntax : cat nama_file

cd: Change Directory, untuk berpindah/berganti direktori.
Syntax : cd nama_direktori
cal: Menampilkan kalender. Syntax : cal
date: Menampilkan informasi tanggal dan waktu saat ini. Syntax : date
du: Menampilkan penggunaan kapasitas harddisk oleh suatu direktori.
Syntax : du [options]

df: Menampilkan penggunaan partisi harddisk secara keseluruhan. df –h
Syntax : df [options]

file : Untuk melihat tipe file
Syntax : file nama_file

grep: Untuk mencari suatu “string” atau “pattern” tertentu pada suatu file.
Syntax : grep PATTERN nama_file

head:  Secara default menampilkan 10 baris pertama pada suatu file. Jika ingin menampilkan jumlah baris yang berbeda dapat menggunakan option -n diikuti jumlah baris yang diinginkan.
Syntax : head [options] nama_file

history: Menampilkan perintah-perintah yang telah digunakan sebelumnya. Note: Linux memiliki fasilitas untuk menyimpan perintah-perintah yang pernah digunakan.
Syntax : history

init: Untuk mengganti run level. Note: Karena penggunaan run level adalah hal yang berpengaruh besar pada sistem, maka untuk melakukan ini harus menggunakan SUPER-USER atau yang memiliki kemampuan sama dengan root.
Syntax : init run_level

ls: Untuk menampilkan isi dari suatu direktori.
Syntax : ls [options] nama_file_atau_direktori

less: Untuk menampilkan isi dari suatu file. Dengan perintah “less”, saat menampilkan suatu file maka file akan terbuka dan dapat di scroll-up & scroll-down. Untuk keluar dari tampilan “less” dapat dilakukan dengan menekan tombol 'q'. Perintah less ini lebih cocok dikatakan sebagai file-viewer, karena dapat menampilkan file tetapi tidak dapat melakukan proses update/editing.
Syntax : less nama_file
man: Menampilkan halaman bantuan/manual (help-page) untuk perintah yang diminta. Linux memiliki kelengkapan dokumentasi yang sangat tepat untuk dijadikan referensi. Halaman bantuan/manual ini biasanya selalu disertakan pada masing-masing program/perintah dan yang bersifat sangat informatif. Untuk menampilkan halaman-halaman manual, sistem menggunakan program “less”, karena itu untuk keluar dari halaman manual dapat dilakukan dengan menekan tombol 'q'.
Syntax : man nama_perintah

mkdir: Membuat direktori
Syntax : mkdir nama_direktori

mv: Untuk memindahkan atau mengganti nama suatu file atau direktori.
Syntax : mv file_atau_direktori_sumber  file_atau_direktori_tujuan

ping: Untuk melakukan test konektivitas/hubungan antara dua komputer dalam suatu jaringan (LAN).
Syntax : ping [options] ip-address

pwd: Present Working Directory, menampilkan informasi direktori aktif saat ini.
Syntax : pwd

rm: Menghapus file/direktori.
Syntax : rm [options] nama_file_atau_direktori

rmdir: Menghapus direktori. Serupa dengan perintah rm -r, hanya saja perintah ini khusus untuk menghapus direktori.
Syntax : rmdir [options]

su: Untuk berganti user aktif. Jika hanya menggunakan su saja maka diasumsikan user yang dituju adalah root.
Syntax : su [options] nama_user

tail: Secara default menampilkan 10 baris terakhir pada suatu file. Jika ingin menampilkan jumlah baris yang berbeda dapat menggunakan option -n diikuti jumlah baris yang diinginkan.
Syntax : tail [options] nama_file

top: Untuk menampilkan aplikasi yang menggunakan resource CPU dan MEMORI terbesar pada sistem.
Syntax : top

uname:  Menampilkan informasi Sistem Operasi (distro, versi, nama mesin dll).
Syntax : uname [options]

vi: Teks editor vi.
Syntax : vi [nama_file]
Beberapa perintah dasar vi yang banyak digunakan adalah :
i : masuk ke mode INSERT, agar dapat melakukan pengetikan
dd : untuk menghapus sebanyak 1 baris.
dnd : untuk menghapus sebanyak N baris.
yyp : untuk meng-copy 1 baris penuh.
[ESC] : untuk keluar dari mode yang sedang aktif.
:w : untuk menyimpan file (w = write).
:q : untuk keluar dari vi (q = quit).
:wq : untuk menyimpan file dan langsung keluar dari vi (wq = write quit)

who: menampilkan informasi user yang sedang login pada sistem.
Syntax : who

whoami: Menampilkan informasi user yang digunakan.
Syntax : whoami

wc: Word Count, menampilkan jumlah bytes, kata dan baris dalam suatu fil
Syntax : wc [options] nama_file





Selasa, 27 September 2011

Contoh dan Pembahasan Tentang Stored Procedure, Function, dan Trigger

NIM/NAMA : Filzah Apritasari / 10.41010.0224
Dosen        :  Tan Amelia
Tugas         : Contoh dan Pembahasan Tentang Stored Procedure, Function, dan Trigger


STORED PROCEDURE


Stored Procedure adalah kumpulan perintah SQL yang diberi nama dan disimpan di server. Stored Procedure biasanya berisi perintah-perintah umum yang berhubungan dengan database pada server, dan menghasilkan sekumpulan record. Stored Procedure ditulis dalam bentuk sebuah script.

Stored Procedure akan meningkatkan performasi database, meningkatkan sekuritas database. Performasi ditingkatkan melalui pemakaian tempat penyimpanan lokal (lokal terhadap database), program yang telah terkompilasi terlebih dahulu, dan pemakaian cache. Setiap kali sebuah perintah atau Stored Procedure dikirimkan ke server untuk diproses, server harus menentukan apakah dikirimkan ke server untuk diproses, server harus menentukan apakah pengirim mempunyai hak untuk menjalankan perintah tersebut dan apakah perintah tersebut benar, Setelah hak dan perintah diperiksa dan benar, SQL Server akan membuat rencana eksekusi.

Stored Procedure lebih efisien dari perintah biasa, karena procedure disimpan si server pada saat dibuat dan dijalankan di server. Stored Procedure yang berisi sekumpulan perintah Transact-SQL akan dipanggil oleh sebuah perintah Transact-SQL.
Sebelum Stored Procedure dibuat, sintaks penulisan perintah dicek kebenarannya. Jika tidak Error, nama procedure disimpan di tabel SysObjects dan teksnya disimpan di tabel SysComments. Pertama kali Stored Procedure dijalankan, rencana eksekusi dibuat dan Stored Procedure dikompilasi. Pemrosesan berikutnya akan lebih cepat, karena SQL Server tidak perlu mengecek sintaks dan membuat rencana eksekusi atau mengkompilasi procedure.

Sekali Stored Procedure dibuat, Anda dapat memanggilnya pada saat diperlukan. Cara ini meningkatkan modularitas dan memungkinkan pemakaian ulang sebuah program. Pemakaian ulang program akan memudahkan pemeliharaan sebuah database. Jika aturan bisnis berubah, Anda hanya perlu mengubah Stored Procedure, sedangkan pemanggilannya tetap.
Stored Procedure dapat menerima parameter, dan menghasilkan parameter, memberikan umpan balik dalam bentuk kode status dan teks, dan dapat memanggil procedure lain. Stored Procedure menjamin sekuritas dengan isolasi dan enkripsi. User diberi hak untuk menjalankan Stored Procedure, tetapi tidak mempunyai hak untuk mengakses database secara langsung. Dengan enkripsi, user tidak dapat membaca perintah-perintah yang dipakai dalam Stored Procedure.


Syntax Stored Procedure :
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
][,...n]

[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]
Argument
Procedure_name
Merupakan nama procedure yang unik (tidak boleh ada nama stored procdure yang sama dalam satu database). 
Number
Ini akan berfungsi jika anda ingin menghapus stored procedure yang mempunyai nama sama pada group server yang berbeda.
@parameter
parameter berfungsi sebagai passing variable antara stored procedure dengan pemanggilnya.
Data_type
Merupakan tipe data dari parameter
VERIYING
Hasil pengembalian mendukung out parameter, hanya diaplikasikan untuk parameter bertipe cursor.
OUTPUT 
Mengindikasikan bahwa parameter berupa return parameter.
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }
RECOMPILE mengindikasikan bahwa stored procedure akan selalu dibuat pada run time
ENCRYPTION mengindikasikan bahwa stored procedure tersebut di-encrypt
FOR REPLICATION
Mengindikasikan bahwa stored procedure hanya dapat dijalankan pada replikasi dan tidak diijinkan dijalankan oleh subscriber.
Sql_statement
Merupakan pendeklarasian proses stored procedure itu sendiri.

Menciptakan stored procedure
CREATE PROCEDURE p1 () SELECT * FROM barang; //
p1 = nama prosedur
() = daftar parameter
SELECT * FROM barang; = bodi prosedur
Mengembalikan delimiter:
delimiter ;
Memanggil stored procedure
mysql> call p1();
+------+--------------------+-------+--------+--------+
| kode | nama               | jenis | harga  | jumlah |
+------+--------------------+-------+--------+--------+
| 001  | Coca cola          | F     |   7500 |     20 |
| 002  | Mi Sedap rasa Soto | A     |    800 |     24 |
| 003  | Kecap ABC          | A     |   2500 |     20 |
| 004  | Kaos oblong        | B     |  15000 |      5 |
| 005  | VCD player         | C     | 235000 |      1 |
| 008  | Ballpoint          | D     |   2500 |     15 |
| 010  | Celana Jeans       | B     |  65000 |      5 |
| 011  | Buku Gambar        | D     |   2000 |     12 |
| 012  | Jaket              | B     |  50000 |      6 |
+------+--------------------+-------+--------+--------+
9 rows in set (0.36 sec)
menghapus procedure
mysql> drop procedure p1;

Parameter
1. Tanpa parameter
CREATE PROCEDURE p5
() ...
2. Satu parameter input
CREATE PROCEDURE p5
([IN] nama tipe-data) ...
3. Satu parameter output
CREATE PROCEDURE p5
(OUT nama tipe-data) ...
4. Satu parameter untuk input dan output
CREATE PROCEDURE p5
(INOUT nama tipe-data) ...

Contoh IN
mysql> CREATE PROCEDURE p5(p INT) SET @x = p //
Query OK, 0 rows affected (0.00 sec)
mysql> CALL p5(12345)//
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @x//
+-------+
| @x    |
+-------+
| 12345 |
+-------+
1 row in set (0.00 sec)


Contoh OUT
mysql> CREATE PROCEDURE p6 (OUT p INT)
-> SET p = -5 //
mysql> CALL p6(@y)//
mysql> SELECT @y//
+------+
| @y   |
+------+
| -5   |
+------+

p adalah nama parameter output. Saat pemanggilan, variabel sesi @y dilewatkan.
Dalam bodi prosedur, parameter diisi dengan -5.
Efeknya sama dengan statemen “SET @y = -5;”.


Gabungan statemen
diapit dengan blok begin ... end

CREATE PROCEDURE p7 ()
BEGIN
  SET @a = 2;
  SET @b = 10;
  SELECT nama, @a * jumlah FROM barang WHERE jumlah >= @b;
END; //


Variabel
dideklarasikan dengan statemen DECLARE

CREATE PROCEDURE p8 ()
BEGIN
  DECLARE a INT;
  DECLARE b INT;
  SET a = 2;
  SET b = 10;
  SELECT nama, a * jumlah FROM barang WHERE jumlah >= b;
END; //

Function

Function adalah jenis PL/SQL block yang menghasilkan satu nilai. Secara umum, function digunakan melakukan perhitungan, mengecek eksistensi dan kevalidan suatu data. Function bisa dilibatkan dalam expresi. Function bisa disimpan dalam database sebagai object schema, sehingga suatu function bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang.

Perbedaan Function dan Stored Procedure
1. Function bisa mengembalikan suatu nilai balik (return value)
2. Pada Function parameter yang diperbolehkan hanya parameter IN
3. Function bisa langsung dipanggil dari perintah SELECT SQL



CREATE [OR REPLACE] FUNCTION function_name

[(parameter1 [mode1] datatype1,
RETURN datatype
IS | AS
PL/SQL block;

Parameter yang berlaku pada function hanya parameter IN.
Privilege yang dibutuhkan CREATE PROCEDURE atau CREATE ANY PROCEDURE
Untuk demo tentang function connect sebagai user SCOTT.
Gunakan tabel EMP, buat function yang mengembalikan SAL dari EMPNO yang dikirim.
-- periksa struktur tabel EMP
SQL> DESC emp;
 Name                    Null?    Type
 ----------------------- -------- -------------
 EMPNO                   NOT NULL NUMBER(4)
 ENAME                            VARCHAR2(10)
 JOB                              VARCHAR2(9)
 MGR                              NUMBER(4)
 HIREDATE                         DATE
 SAL                              NUMBER(7,2)
 COMM                             NUMBER(7,2)
 DEPTNO                           NUMBER(2)
CREATE OR REPLACE FUNCTION GET_SAL  (P_EMPNO   NUMBER)
RETURN NUMBER
AS
   V_SAL    NUMBER(10);
BEGIN
  SELECT SAL INTO V_SAL
  FROM EMP  WHERE EMPNO=P_EMPNO;
  -- Nilai yang dikeluarkan
  RETURN V_SAL;
END;
/
Berbagai cara menjalankan Function.
– Menjalankan function sebagai parameter dari suatu procedure
SQL> SET SERVEROUTPUT ON
SQL> EXECUTE DBMS_OUTPUT.PUT_LINE(GET_GAJI(7369));
800
– Menjalankan funtion sebagai bagian dari ekspresi
SQL> SET AUTOPRINT ON
SQL> VARIABLE G_HASIL NUMBER;
SQL> EXECUTE :G_HASIL := GET_GAJI(7788);
PL/SQL procedure successfully completed.
G_HASIL
----------
3000
– Menjalankan function pada perintah SELECT
SQL> SELECT EMPNO,ENAME,GET_SAL(EMPNO) FROM EMP;
       NIP NAMA       GET_SAL(EMPNO)
---------- ---------- -------------
      7369 SMITH                800   
      7499 ALLEN               1600
      7521 WARD                1250
      7566 JONES               2975
      7654 MARTIN              1250
Contoh lain function
CREATE OR REPLACE FUNCTION PAJAK(P_SAL NUMBER, PCT NUMBER)
RETURN NUMBER
AS
BEGIN
   RETURN (P_SAL * (PCT/100));
END;
/
SQL> SELECT EMPNO,ENAME,SAL,PAJAK(SAL,10)
2  FROM EMP;
     EMPNO ENAME             SAL PAJAK(SAL,10)
---------- ---------- ---------- -------------
      7369 SMITH             800            80
      7499 ALLEN            1600           160
      7521 WARD             1250           125
      7566 JONES            2975         297.5
      7654 MARTIN           1250           125
      7698 BLAKE            2850           285
      7782 CLARK            2450           245
      7788 SCOTT            3000           300
      7839 KING             5000           500

Trigger

Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE.
INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.
Insert : Triger aktif saat baris baru dimasukkan ke dalam tabel
Update : Triger aktif saat ada baris diperbaharui dimasukkan di dalam tabel
Delete :Triger aktif saat baris dihapus dalam tabel
Bentuk dasar perintahnya :
CREATE TRIGGER nama_trigger
ON nama_tabel
FOR INSERT, UPDATE, DELETE
AS
isi statement-statement Anda disini.
GO
Saya akan memberi contoh sederhana untuk mudah memahami bagaimana cara kerja trigger ini.
Misalkan kita punya data di table DaftarSiswa
DaftarSiswa
Kode
Status
1001

1002

1003

Di tabel yang lain kita juga punya tabel Daftar Nilai :
DaftarNilai
Kode
Nilai
Daftar nilai ini belum ada isinya yang nantinya akan kita isi dengan perintah INSERT.
Kolom Status pada tabel DaftarSiswa akan kita isi dengan “Lulus” dan “Tidak Lulus” secara automatis saat kita melakukan INSERT dan UPDATE pada tabel DaftarNilai.
Cara membuat dan mengisi kedua tabel diatas :
CREATE TABLE daftarSiswa (kode char(4), status char(10))
CREATE TABLE daftarnilai (kode char(4), nilai float)
Pada tabel DaftarSiswa diisi dengan perintah berikut :
INSERT INTO daftarSiswa VALUES(’1001′,”)
INSERT INTO daftarSiswa VALUES(’1002′,”)

INSERT INTO daftarSiswa VALUES(’1003′,”)
Setelah semuanya dijalankan di Query Analyzer, berikutnya kita akan membuat suatu trigger di tabel daftarNilai.
CREATE TRIGGER tr_status     
ON daftarnilai
FOR INSERT, UPDATE
AS
DECLARE @kode char(4)
DECLARE @nilai float
SELECT @kode = kode, @nilai = nilai FROM daftarNilai
IF @nilai >= 60
UPDATE daftarSiswa SET status = ‘Lulus’ WHERE kode=@kode
ELSE UPDATE daftarSiswa SET status = ‘Tidak Lulus’ WHERE kode=@kode
go

Untuk menganalisa lihat isi kedua tabel diatas dengan perintah
SELECT* FROM daftarSiswa
SELECT* FROM daftarNilai
Setelah Anda melihat hasilnya kemudian jalankan perintah dibawah ini :
INSERT INTO daftarNilai values(’1001′,70)
INSERT INTO daftarNilai values(’1002′,50)
INSERT INTO daftarNilai values(’1003′,80)
Setelah dijalankan Anda bisa lihat kembali isi tabel daftarSiswa dan daftarNilai.
DaftarSiswa
Kode
Status
1001
Lulus
1002
Tidak Lulus
1003
Lulus

DaftarNilai
Kode
Nilai
1001
70
1002
50
1003
80
Disini terlihat saat kita melakukan perintah INSERT di tabel daftarNilai secara otomatis program trigger melakukan pengisian pada tabel daftarSiwa pada kolom “status”