Blogroll

Páginas

Tuesday, September 20, 2011

Tugas 2 Pemrograman Basis Data

STORED PROCEDUR,TRIGGER,FUNCTION
Nama : Nur Sakti Yanuar Ardhy
 NIM : 10410100264



1.STORE PROCEDURE

 Adalah program yang disimpan dalam data base seperti halnya data. Hal ini sebenanya cukup tidak umum, karena kita mengharapkan yang disimpan dalam database adalah data bukan program. Karena didalam STORE PROCEDURE ini kita akan melakukan perhitungan-perhitungan data yang hasilnya berupa dataset langsung dapat kita ambil melalui program aplikasi yang kita bikin. Jadi STORE PROCEDURE tersebut letaknya di Sever yang berupa bahasa SQL dimana didalam program tersebut biasanya ditugaskan untuk melakukan perhitungan-perhitungan data dimana hasil akhirnya dapat kita ambil dan ditampilkan lewat program-program aplikasi yang berhubungan langsung dengan end user letaknya di komputer Client.


Dengan adanya Store Procedure, maka program SQL yang telah kita buat :
  • dapat digunakan kapanpun
  • lebih cepat dan efisien karena bersifat Server Side
  • mudah dibuat dan dirawat karena kecil tapi ‘Power Full’
STORED PROCEDURE/FUNCTIONUntuk membuat stored procedure/function pada database digunakan pernyataan
CREATE PROCEDURE atau CREATE FUNCTION
Sintak :
MENCIPTAKAN PROC [EDURE] [pemilik.] Procedure_name [; angka]
[{@ Parameter data_type}
[Memvariasikan] [= default] [OUTPUT]
] [, ... N]

[DENGAN
{Mengkompilasi ulang | ENCRYPTION | mengkompilasi ulang, ENCRYPTION}]

[UNTUK REPLIKASI]

SEBAGAI sql_statement [... n]
Argumen
pemilik
Apakah nama ID pengguna yang memiliki prosedur yang tersimpan. Pemilik harus berupa nama pengguna saat ini atau nama peran bahwa pengguna saat ini adalah anggota.
procedure_name
Apakah nama prosedur yang tersimpan baru. Prosedur nama harus sesuai dengan aturan untuk pengenal dan harus unik di dalam database dan pemiliknya. Untuk informasi lebih lanjut, lihat Menggunakan Identifier .
Prosedur sementara lokal atau global dapat dibuat dengan mendahului procedure_name dengan tanda nomor tunggal (# procedure_name) untuk prosedur sementara lokal dan tanda nomor ganda (# # procedure_name) untuk prosedur sementara global. Nama lengkap, termasuk # atau # #, tidak dapat melebihi 128 karakter. Menentukan nama pemilik prosedur adalah opsional.
, Nomor
Apakah integer opsional digunakan untuk prosedur kelompok nama yang sama sehingga mereka dapat dijatuhkan bersama-sama dengan pernyataan PROSEDUR DROP tunggal. Misalnya, prosedur yang digunakan dengan aplikasi yang disebut perintah mungkin dinamai orderproc; 1, orderproc, 2, dan seterusnya. Pernyataan DROP PROSEDUR orderproc tetes seluruh kelompok. Jika nama mengandung pengidentifikasi delimited, nomor tersebut tidak harus dimasukkan sebagai bagian dari pengenal; menggunakan pembatas yang sesuai sekitar procedure_name saja.
@ Parameter
Adalah parameter dalam prosedur. Satu atau lebih parameter dapat dinyatakan dalam sebuah pernyataan PROSEDUR CREATE. Nilai setiap parameter dinyatakan harus dipasok oleh pengguna ketika prosedur dijalankan (kecuali default untuk parameter didefinisikan atau nilainya diatur untuk sama parameter lain). Sebuah prosedur yang tersimpan dapat memiliki maksimum 2.100 parameter.
Tentukan nama parameter menggunakan tanda (@) sebagai karakter pertama. Nama parameter harus sesuai dengan aturan untuk identifier. Parameter lokal untuk prosedur; nama parameter yang sama dapat digunakan dalam prosedur lainnya. Secara default, parameter dapat mengambil tempat hanya konstanta, mereka tidak dapat digunakan di tempat nama tabel, nama kolom, atau nama-nama objek database lain. Untuk informasi lebih lanjut, lihat Execute .
data_type
Apakah tipe data parameter. Semua tipe data, kecuali tipe data tabel, dapat digunakan sebagai parameter untuk prosedur yang tersimpan. Namun, tipe data kursor hanya dapat digunakan pada parameter OUTPUT. Ketika Anda menentukan tipe data dari kursor, kata kunci yang bervariasi dan OUTPUT juga harus ditetapkan. Untuk informasi lebih lanjut tentang SQL Server - memasok data jenis dan sintaks mereka, lihat jenis data.

Catatan Tidak ada batasan pada jumlah maksimum parameter output yang dapat dari tipe data kursor.
Memvariasikan
Menentukan hasil set didukung sebagai parameter output (dibangun secara dinamis dengan prosedur yang tersimpan dan isi yang dapat bervariasi). Berlaku hanya untuk parameter kursor.
STANDART Adalah nilai default untuk parameter. Jika default didefinisikan, prosedur dapat dijalankan tanpa menentukan nilai parameter yang. Default harus konstan atau dapat menjadi NULL. Hal ini dapat menyertakan karakter wildcard (%, _, [], dan [^]) jika prosedur menggunakan parameter dengan kata kunci SEPERTI.
OUTPUT Menunjukkan bahwa parameter adalah parameter kembali. Nilai dari opsi ini dapat dikembalikan ke EXEC [UTE]. Gunakan parameter OUTPUT untuk kembali informasi ke Teks pemanggilan prosedur., Ntext, dan parameter gambar dapat digunakan sebagai parameter OUTPUT. Parameter output dengan menggunakan kata kunci OUTPUT dapat placeholder kursor.
n Adalah placeholder menunjukkan bahwa maksimum 2.100 parameter dapat ditentukan.
{Mengkompilasi ulang | ENCRYPTION | mengkompilasi ulang, ENCRYPTION} Mengkompilasi ulang menunjukkan bahwa SQL Server tidak cache rencana untuk prosedur ini dan prosedur direkompilasi pada saat dijalankan. Gunakan opsi mengkompilasi ulang bila menggunakan nilai-nilai khas atau sementara tanpa mengesampingkan rencana eksekusi cache dalam memori.
ENKRIPSI menunjukkan bahwa SQL Server mengubah teks asli dari pernyataan PROSEDUR MENCIPTAKAN ke format dikaburkan. Perhatikan bahwa prosedur yang tersimpan dikaburkan dapat membalikkan direkayasa karena SQL Server harus de-mengaburkan prosedur untuk eksekusi. Dalam SQL Server 2000, teks dikaburkan terlihat dalam tabel sistem syscomments dan mungkin rentan terhadap upaya de-kebingungan.
Menggunakan prosedur ENKRIPSI mencegah dari yang diterbitkan sebagai bagian dari replikasi SQL Server.
Catatan Selama proses upgrade, SQL Server menggunakan komentar dikaburkan disimpan dalam syscomments untuk menciptakan kembali prosedur dikaburkan.
UNTUK REPLIKASI Menentukan bahwa prosedur yang tersimpan dibuat untuk replikasi tidak dapat dijalankan pada Pelanggan tersebut. Sebuah prosedur yang tersimpan dibuat dengan opsi UNTUK REPLIKASI digunakan sebagai filter prosedur yang tersimpan dan hanya dieksekusi selama replikasi. Pilihan ini tidak dapat digunakan dengan opsi DENGAN mengkompilasi ulang.


2.TRIGGER
reate Trigger dalam SQL
Merupakan sebuah program unit yang disimpan didalam database dan hanya dapat dieksekusi (fired) secara implisit oleh server (oracle server) menurut event yang terjadi pada object acuan dari trigger tersebut.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.
Kegunaan Trigger       :
1.Menentukan nilai kolom – kolom tertentu secara otomatis
2.Menghindarkan transaksi yang tidak valid
3.Membuat autorisasi sekuriti yang kompleks
4.Membuat bussines rule yang kompleks
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.

DaftarNilai
Kode
Nilai
1001
70
1002
50
1003
80
DaftarSiswa
Kode
Status
1001
Lulus
1002
Tidak Lulus
1003
Lulus








Disini terlihat saat kita melakukan perintah INSERT di tabel daftarNilai secara otomatis program trigger melakukan pengisian pada tabel daftarSiwa pada kolom “status”
Cukup sampai disini dulu penjelasan saya mengenai TRIGGER.




3.FUNGSI
Membuat fungsi user-defined, yang merupakan rutinitas Transact-SQL yang disimpan yang mengembalikan nilai. Fungsi user-defined tidak dapat digunakan untuk melakukan serangkaian tindakan yang memodifikasi negara database global. Fungsi user-defined, seperti fungsi sistem, dapat dipanggil dari query. Mereka juga dapat dilakukan melalui pernyataan EXECUTE seperti prosedur yang tersimpan.
Fungsi user-defined dimodifikasi menggunakan FUNGSI ALTER, dan menjatuhkan menggunakan DROP FUNCTION.
Sintaksis
Fungsi Skalar
MENCIPTAKAN FUNGSI [OWNER_NAME.] Function_name
([{@ Parameter_name [AS] scalar_parameter_data_type [= default]} [, ... n]])
PENGEMBALIAN scalar_return_data_type
[DENGAN <function_option> [[,] ... n]]
[AS]
BEGIN
function_body
RETURN scalar_expression
AKHIR
Inline Table-dihargai Fungsi
MENCIPTAKAN FUNGSI [OWNER_NAME.] Function_name
([{@ Parameter_name [AS] scalar_parameter_data_type [= default]} [, ... n]])
PENGEMBALIAN TABEL
[DENGAN <function_option> [[,] ... n]]
[AS]
RETURN [(] pilih-stmt [)]
Multi-pernyataan bernilai Tabel Fungsi
MENCIPTAKAN FUNGSI [OWNER_NAME.] Function_name
([{@ Parameter_name [AS] scalar_parameter_data_type [= default]} [, ... n]])
PENGEMBALIAN @ TABEL return_variable <table_type_definition>
[DENGAN <function_option> [[,] ... n]]
[AS]
BEGIN
function_body
RETURN
AKHIR
<Function_option>:: =
{ENCRYPTION | SCHEMABINDING}
<Table_type_definition>:: =
({Column_definition | table_constraint} [, ... n])
Argumen
OWNER_NAME
Apakah nama ID pengguna yang memiliki fungsi user-defined. OWNER_NAME harus menjadi user ID yang ada.
function_name
Apakah nama fungsi user-defined. Nama fungsi harus sesuai dengan aturan untuk pengenal dan harus unik di dalam database dan pemiliknya.
@ Parameter_name
Adalah parameter dalam fungsi user-defined. Satu atau lebih parameter dapat dinyatakan dalam sebuah pernyataan FUNGSI CREATE. Sebuah fungsi dapat memiliki maksimum 1.024 parameter. Nilai setiap parameter dinyatakan harus dipasok oleh user saat fungsi dijalankan, kecuali default untuk parameter didefinisikan. Ketika parameter fungsi memiliki nilai default, kata kunci "standar" harus ditentukan saat memanggil fungsi untuk mendapatkan nilai default. Perilaku ini berbeda dari parameter dengan nilai default dalam prosedur yang tersimpan di mana menghilangkan parameter juga menyiratkan nilai default.
Tentukan nama parameter menggunakan tanda (@) sebagai karakter pertama. Nama parameter harus sesuai dengan aturan untuk identifier. Parameter lokal untuk fungsi; nama parameter yang sama dapat digunakan dalam fungsi lain. Parameter dapat mengambil tempat hanya konstanta, mereka tidak dapat digunakan di tempat nama tabel, nama kolom, atau nama-nama objek database lain.
scalar_parameter_data_type
Apakah tipe data parameter. Semua tipe data skalar, termasuk bigint dan sql_variant, dapat digunakan sebagai parameter untuk fungsi user-defined. Data tipe timestamp dan user-defined data jenis tidak didukung. Nonscalar jenis seperti kursor dan tabel tidak dapat ditentukan.

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More