Kamis, 30 Juni 2011

TRIGER, VIEW ,dan STORE Procedure

Definisi Triger
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 Trigge

   SintakSQL dalam Triger.
 Bentuk dasar perintah dari Triger.

Ke-1

CREATE TRIGGER nama_trigger
ON nama_tabel
FOR INSERT, UPDATE, DELETE
AS
isi statement-statement Anda disini.
GO



Ke-2
Cara membuat dan mengisi tabe lpada trigger , disini kita mengambil table Daftar Siswa dan table Daftar Nilai :
CREATE TABLE daftar Siswa (kodechar(4), status char(10))
CREATE TABLE daftarnilai (kodechar(4), nilai float)
Pada tabel Daftar Siswa diisi dengan perintah berikut :
INSERT INTO daftarSiswaVALUES(’1001′,”)
INSERT INTO daftarSiswaVALUES(’1002′,”)
INSERT INTO daftarSiswaVALUES(’1003′,”)

Ke-3
Setelah semuanya dijalankan di Query Analyzer, berikutnya kita akan membuat suatu trigger di tabel daftar Nilai.


CREATE TRIGGER tr_status     
ON daftar nilai
FOR INSERT, UPDATE
AS
DECLARE @kodechar(4)
DECLARE @nilai float
SELECT @kode = kode, @nilai = nilai FROM daftar Nilai
IF @nilai>= 60
UPDATE daftarSiswa SET status = ‘Lulus’ WHERE kode=@kode
ELSE UPDATE daftarSiswa SET status = ‘Tidak Lulus’ WHERE kode=@kode
go




Ke-4
Untuk menganalisa lihat isi ke dua tabel diatas dengan perintah.
SELECT* FROM daftar Siswa
SELECT* FROM daftar Nilai

Setelah Anda melihat hasilnya kemudian jalankan perintah dibawah ini :

INSERT INTO daftarNilaivalues(’1001′,70)
INSERT INTO daftarNilaivalues(’1002′,50)
INSERT INTO daftarNilaivalues(’1003′,80)

Contoh  Triger
table berdasarkan sintak Ke-2
DaftarNilai
Kode
Nilai
                          
DaftarSiswa
Kode
Status
1001

1002

1003







Contoh table hasil dari sintak Ke-2, Ke-3 dan Ke-4 
DaftarNilai
Kode
Nilai
1001
70
1002
50
1003
80

DaftarSiswa
Kode
Status
1001
Lulus
1002
Tidak Lulus
1003
Lulus






Store Procedure.
·         Definisi Store Procedure
Procedure Adalah program yang disimpan dalam database sepertihalnya data. Hal ini sebenanya cukup tidak umum, karena kita mengharapkan yang disimpan dalam database adalah data bukannya program.

Adanya dukungan Stored Procedure akan membuat program anda lebih ringkas dan mudah untuk dikembangkan.

Stored procedure akan membantu anda dalam membuat laporan yang sifatnya analisa data, yang biasanya  memerlukan banyaks ekali tabel2 pembantu.. Stored procedure mengefisienkan proses, sehingga semua daya hanya akan dipusatkan di komputer server saja.
·         Sintak SQL dalam Store Procedure
CREATE PROCEDURE nama_stored_procedurenya @parameter1 tipe_data, @parameter2 2 tipe_data AS isiprocedurenya.
Penjelasan
1.namastored_procedure tidak boleh sama dengan nama fungsi internal, misal CREATE PROCEDURE SUM, tidak boleh ada spasi, tapi bisa menggunakan karakter _
2. Untuk membuat stored procedure gunaka nperintah CREATE, untuk mengedit gunakanALTER ,untuk menghapus gunakan DROP.
perintah CREATE, ALTER, DROP dapat digunakan juga untuk membuat TABLE, VIEW, TRIGGER, FUNCTION, misal CREATE VIEW, ALTER FUNCTION,dsb
3. SQL Server mengenali parameter/variabel karena ada tanda @, contoh : @nama_barang char(50), @tanggal datetime, dsb
4. Untukdeklarasi parameter di Stored Procedure gunakan DECLARE
contoh : DECLARE @StartDatedatetime, @EndDatedatetime, dst..
5. Untukmemasukkannilaikesebuah parameter, gunakan SET atau SELECT, contoh :
SET @nama='Itanium' 
SET @Web='Klik-kanan' (perintah SET hanyabisauntuk 1 variabelsaja)
SELECT @nama='Itanium', @Web='Klik-kanan' (perintah SELECT bisadigunakanuntukbanyakvariabel)

6. Untukmengambilnilaidarisebuah field daritabelkedalamvariabeldapatjugamenggunakan SET / SELECT ,misal : SET @nama= SELECT nama FROM user WHERE login='Itanium') selalugunakananda(),perintahini valid bila data yang ditemukanhanya 1, bilalebih, makavaribale @namatidakakanadanilainya.
7. Untukmengambil data dalamjumlahbanyak, misalseperti array atauStringList, gunakan temporary tabel.untukpembahasanlebihlengkap, tunggu posting berikutnya.
Contohpembuatan Stored Procedure. Kita akanmembuatsebuah Stored procedure yang berfungsiuntukmenggantikanperintah SELECT yang rumit, misaluntuklaporanstokbarang.

·         Contoh Store Procedure.
Dalamcontohiniada 3 tabel yang digunakan :

1. Barang (IDBarang, NamaBarang, IDSatuan).

2. Satuan (IDSatuan, Satuan).

3. StockBarang (Tanggal, IDBarang, SAwal,Masuk,Keluar,SAkhir) laporan yang dimintaadalahuntukmenampilkan stock sesuaidenganperiodetertentu (bisa per hari, bisajuga per minggu, tergantunginputanStartDatedanEndDate). SQL untukpembuatanStored Procedure nya :

CREATE PROCEDURE LapStockBarang1 @StartDatevarchar(10), @EndDatevarchar(10) AS


 DECLARE @tgl1 datetime, @tgl2 datetime 
**(variabelStartDatetidakbisalangsungdatetimekarenaperintah EXEC LapStockBarangdalambentuk string)
CREATE TABLE #TStock (IDBarangvarchar(5), SAwal real, Masuk real, Keluar real)
CREATE TABLE #TStock2 (IDBarangvarchar(5), SAwal real, Masuk real, Keluar real, SAkhir real)
** buat temporary table , tanda # menandaibahwatabelinihanyaakanadasaat proses stored procedure.

SELECT @tgl1= CONVERT(datetime,@StartDate,103), @tgl2=CONVERT(datetime,@EndDate,103)
** convert varchar(string) ketipedatetime, gunakanperintah CONVERT(tipe,variabel,format). Format 103 adalah format dd/mm/yyyy
INSERT INTO #TStock (IDBarang, SAwal)
SELECT (IDBarang, SAwal)
FROM StockBarang 
WHERE tanggal= @tgl1
** masukkansaldoawalpadatanggalbulanitu
INSERT INTO #TStock (IDBarang, Masuk, Keluar)
SELECT IDBarang, SUM(Masuk), SUM(Keluar)
FROM StockBarang
WHERE tanggal BETWEEN @tgl1 AND @tgl2
GROUP BY IDBarang
** masukkan JUMLAH darimasukdankeluar
INSERT INTO #TStock2 (IDBarang, SAwal, Masuk, Keluar)
SELECT IDBarang, SUM(SAwal), SUM(Masuk), SUM(Keluar)
FROM #TStock
GROUP BY IDBarang
** sekaranggabungkan data2 nya
UPDATE #TStock2 SET SAkhir= SAwal + Masuk - Keluar
SELECT t.*, b.NamaBarang, s.Satuan
FROM #TStock2 AS t, Barang AS b, Satuan AS s
WHERE t.IDBarang=b.IDBarang
ND b.IDSatuan=s.IDSatuan
ORDER BY b.IDBarang



View











 Definisi View



Definisi view adalah hasil (result) dari sebuah Query terhadap relasi- relasi dasar (ataurelasi real). Hasil (view) ini tidak disimpan dalam database seperti relasi dasar.Sebuah view adalah sebuah jendela dinamik, dalam artian bahwa ia mencerminkan semua update yang dilakukan terhadap database. Disamping pemakaiannya di dalams kemaexternal, view juga berguna untuk menjamin data- security dengan cara yang sederhana. Dengan memilih subset dari database, view dapat menyembunyikan beberapa data.
·         Sintak SQL pada View
alter session set nls_date_format = 'DD.MM.YYYY';
create table prices_ (

sku        varchar2(38),

price      number,

valid_from date

);

insert into prices_ values ('4711', 18, '08.01.2003');
insert into prices_ values ('4711', 19, '01.05.2000');
insert into prices_ values ('4711', 20, '18.01.2001');
insert into prices_ values ('4711', 21, '09.01.2000');

insert into prices_ values ('beer', 14, '07.03.2000');
insert into prices_ values ('beer', 15, '10.01.2003');
insert into prices_ values ('beer', 16, '18.01.2001');
insert into prices_ values ('beer', 19, '16.11.2001');
insert into prices_ values ('beer', 17, '19.02.2002');

create view prices_today_ as



select
sku,
price,
valid_from
from
  (select
sku,
price,
valid_from,
rank() over (partition by sku order by valid_fromdesc) r



from



     prices_



  )



where r=1;



select * from prices_today_;
drop table prices_;
drop view prices_today_;



 

TRIGER, VIEW ,dan STORE Procedure

Definisi Triger
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 Trigge

   SintakSQL dalam Triger.
 Bentuk dasar perintah dari Triger.

Ke-1

CREATE TRIGGER nama_trigger
ON nama_tabel
FOR INSERT, UPDATE, DELETE
AS
isi statement-statement Anda disini.
GO



Ke-2
Cara membuat dan mengisi tabe lpada trigger , disini kita mengambil table Daftar Siswa dan table Daftar Nilai :
CREATE TABLE daftar Siswa (kodechar(4), status char(10))
CREATE TABLE daftarnilai (kodechar(4), nilai float)
Pada tabel Daftar Siswa diisi dengan perintah berikut :
INSERT INTO daftarSiswaVALUES(’1001′,”)
INSERT INTO daftarSiswaVALUES(’1002′,”)
INSERT INTO daftarSiswaVALUES(’1003′,”)

Ke-3
Setelah semuanya dijalankan di Query Analyzer, berikutnya kita akan membuat suatu trigger di tabel daftar Nilai.


CREATE TRIGGER tr_status     
ON daftar nilai
FOR INSERT, UPDATE
AS
DECLARE @kodechar(4)
DECLARE @nilai float
SELECT @kode = kode, @nilai = nilai FROM daftar Nilai
IF @nilai>= 60
UPDATE daftarSiswa SET status = ‘Lulus’ WHERE kode=@kode
ELSE UPDATE daftarSiswa SET status = ‘Tidak Lulus’ WHERE kode=@kode
go




Ke-4
Untuk menganalisa lihat isi ke dua tabel diatas dengan perintah.
SELECT* FROM daftar Siswa
SELECT* FROM daftar Nilai

Setelah Anda melihat hasilnya kemudian jalankan perintah dibawah ini :

INSERT INTO daftarNilaivalues(’1001′,70)
INSERT INTO daftarNilaivalues(’1002′,50)
INSERT INTO daftarNilaivalues(’1003′,80)

Contoh  Triger
table berdasarkan sintak Ke-2
DaftarNilai
Kode
Nilai
                          
DaftarSiswa
Kode
Status
1001

1002

1003







Contoh table hasil dari sintak Ke-2, Ke-3 dan Ke-4 
DaftarNilai
Kode
Nilai
1001
70
1002
50
1003
80

DaftarSiswa
Kode
Status
1001
Lulus
1002
Tidak Lulus
1003
Lulus






Store Procedure.
·         Definisi Store Procedure
Procedure Adalah program yang disimpan dalam database sepertihalnya data. Hal ini sebenanya cukup tidak umum, karena kita mengharapkan yang disimpan dalam database adalah data bukannya program.

Adanya dukungan Stored Procedure akan membuat program anda lebih ringkas dan mudah untuk dikembangkan.

Stored procedure akan membantu anda dalam membuat laporan yang sifatnya analisa data, yang biasanya  memerlukan banyaks ekali tabel2 pembantu.. Stored procedure mengefisienkan proses, sehingga semua daya hanya akan dipusatkan di komputer server saja.
·         Sintak SQL dalam Store Procedure
CREATE PROCEDURE nama_stored_procedurenya @parameter1 tipe_data, @parameter2 2 tipe_data AS isiprocedurenya.
Penjelasan
1.namastored_procedure tidak boleh sama dengan nama fungsi internal, misal CREATE PROCEDURE SUM, tidak boleh ada spasi, tapi bisa menggunakan karakter _
2. Untuk membuat stored procedure gunaka nperintah CREATE, untuk mengedit gunakanALTER ,untuk menghapus gunakan DROP.
perintah CREATE, ALTER, DROP dapat digunakan juga untuk membuat TABLE, VIEW, TRIGGER, FUNCTION, misal CREATE VIEW, ALTER FUNCTION,dsb
3. SQL Server mengenali parameter/variabel karena ada tanda @, contoh : @nama_barang char(50), @tanggal datetime, dsb
4. Untukdeklarasi parameter di Stored Procedure gunakan DECLARE
contoh : DECLARE @StartDatedatetime, @EndDatedatetime, dst..
5. Untukmemasukkannilaikesebuah parameter, gunakan SET atau SELECT, contoh :
SET @nama='Itanium' 
SET @Web='Klik-kanan' (perintah SET hanyabisauntuk 1 variabelsaja)
SELECT @nama='Itanium', @Web='Klik-kanan' (perintah SELECT bisadigunakanuntukbanyakvariabel)

6. Untukmengambilnilaidarisebuah field daritabelkedalamvariabeldapatjugamenggunakan SET / SELECT ,misal : SET @nama= SELECT nama FROM user WHERE login='Itanium') selalugunakananda(),perintahini valid bila data yang ditemukanhanya 1, bilalebih, makavaribale @namatidakakanadanilainya.
7. Untukmengambil data dalamjumlahbanyak, misalseperti array atauStringList, gunakan temporary tabel.untukpembahasanlebihlengkap, tunggu posting berikutnya.
Contohpembuatan Stored Procedure. Kita akanmembuatsebuah Stored procedure yang berfungsiuntukmenggantikanperintah SELECT yang rumit, misaluntuklaporanstokbarang.

·         Contoh Store Procedure.
Dalamcontohiniada 3 tabel yang digunakan :

1. Barang (IDBarang, NamaBarang, IDSatuan).

2. Satuan (IDSatuan, Satuan).

3. StockBarang (Tanggal, IDBarang, SAwal,Masuk,Keluar,SAkhir) laporan yang dimintaadalahuntukmenampilkan stock sesuaidenganperiodetertentu (bisa per hari, bisajuga per minggu, tergantunginputanStartDatedanEndDate). SQL untukpembuatanStored Procedure nya :

CREATE PROCEDURE LapStockBarang1 @StartDatevarchar(10), @EndDatevarchar(10) AS


 DECLARE @tgl1 datetime, @tgl2 datetime 
**(variabelStartDatetidakbisalangsungdatetimekarenaperintah EXEC LapStockBarangdalambentuk string)
CREATE TABLE #TStock (IDBarangvarchar(5), SAwal real, Masuk real, Keluar real)
CREATE TABLE #TStock2 (IDBarangvarchar(5), SAwal real, Masuk real, Keluar real, SAkhir real)
** buat temporary table , tanda # menandaibahwatabelinihanyaakanadasaat proses stored procedure.

SELECT @tgl1= CONVERT(datetime,@StartDate,103), @tgl2=CONVERT(datetime,@EndDate,103)
** convert varchar(string) ketipedatetime, gunakanperintah CONVERT(tipe,variabel,format). Format 103 adalah format dd/mm/yyyy
INSERT INTO #TStock (IDBarang, SAwal)
SELECT (IDBarang, SAwal)
FROM StockBarang 
WHERE tanggal= @tgl1
** masukkansaldoawalpadatanggalbulanitu
INSERT INTO #TStock (IDBarang, Masuk, Keluar)
SELECT IDBarang, SUM(Masuk), SUM(Keluar)
FROM StockBarang
WHERE tanggal BETWEEN @tgl1 AND @tgl2
GROUP BY IDBarang
** masukkan JUMLAH darimasukdankeluar
INSERT INTO #TStock2 (IDBarang, SAwal, Masuk, Keluar)
SELECT IDBarang, SUM(SAwal), SUM(Masuk), SUM(Keluar)
FROM #TStock
GROUP BY IDBarang
** sekaranggabungkan data2 nya
UPDATE #TStock2 SET SAkhir= SAwal + Masuk - Keluar
SELECT t.*, b.NamaBarang, s.Satuan
FROM #TStock2 AS t, Barang AS b, Satuan AS s
WHERE t.IDBarang=b.IDBarang
ND b.IDSatuan=s.IDSatuan
ORDER BY b.IDBarang



View











 Definisi View



Definisi view adalah hasil (result) dari sebuah Query terhadap relasi- relasi dasar (ataurelasi real). Hasil (view) ini tidak disimpan dalam database seperti relasi dasar.Sebuah view adalah sebuah jendela dinamik, dalam artian bahwa ia mencerminkan semua update yang dilakukan terhadap database. Disamping pemakaiannya di dalams kemaexternal, view juga berguna untuk menjamin data- security dengan cara yang sederhana. Dengan memilih subset dari database, view dapat menyembunyikan beberapa data.
·         Sintak SQL pada View
alter session set nls_date_format = 'DD.MM.YYYY';
create table prices_ (

sku        varchar2(38),

price      number,

valid_from date

);

insert into prices_ values ('4711', 18, '08.01.2003');
insert into prices_ values ('4711', 19, '01.05.2000');
insert into prices_ values ('4711', 20, '18.01.2001');
insert into prices_ values ('4711', 21, '09.01.2000');

insert into prices_ values ('beer', 14, '07.03.2000');
insert into prices_ values ('beer', 15, '10.01.2003');
insert into prices_ values ('beer', 16, '18.01.2001');
insert into prices_ values ('beer', 19, '16.11.2001');
insert into prices_ values ('beer', 17, '19.02.2002');

create view prices_today_ as



select
sku,
price,
valid_from
from
  (select
sku,
price,
valid_from,
rank() over (partition by sku order by valid_fromdesc) r



from



     prices_



  )



where r=1;



select * from prices_today_;
drop table prices_;
drop view prices_today_;