Selasa, 27 September 2011

Tugas PBD Pertemuan 3

NAMA/NIM  : Fitriana Faristia / 10.41010.0206
Dosen             : Tan Amelia
Tugas              :Contoh dan Pembahasan Stored Prosedure, Function, Trigger

Pertemuan 15&16
STORED PROCEDURE
Stored procedure adalah prosedur (spt subprogram dalam bhs pemrograman) yang disimpan di dalam database.
MySQL mendukung dua jenis “rutin” (subprogram):
  • stored procedure yang dapat dipanggil,
  • fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain.

Contoh
Statemen yang menciptakan strored procedure

CREATE PROCEDURE procedure1               /* nama */
(IN parameter1 INTEGER)                   /* parameter */
BEGIN                                     /* awal blok */
  DECLARE variable1 CHAR(10);             /* variabel */
  IF parameter1 = 17 THEN                 /* awal IF */
   SET variable1 = 'burung';              /* assignment */
  ELSE
   SET variable1 = 'kelelawar';           /* assignment */
  END IF;                                 /* akhir IF */
  INSERT INTO table1 VALUES (variable1);  /* statement */
END                                       /* akhir blok  */


Mengapa Strored Procedure

Dengan stored procedure eksekusi menjadi cepat. Tidak ada kompilasi. Peningkatan kecepatan datang dari reduksi lalu-lintas jaringan. Jika ada pekerjaan pengecekan berulang, looping, multiple statement, dikerjakan dengan pemanggilan tunggal ke prosedur yang telah disimpan ke server.

Stored procedure adalah komponen. Andaikan aplikasi kemudian ditulis dalam bahasa berbeda, tidak ada masalah, karena logika berada didalam database bukan dalam aplikasi.

Stored procedure adalah portable. Stored procedure ditulis dalam SQL, Anda bisa jalankan pada setiap platform dimana MySQL dijalankan disitu.


Memulai klien MySQL

Cek versi:
SHOW VARIABLES LIKE 'version';


atau

SELECT VERSION();


Hasilnya:
mysql> SHOW VARIABLES LIKE 'version';
+---------------+-------------------------+
| Variable_name | Value                   |
+---------------+-------------------------+
| version       | 5.0.22-community-max-nt |
+---------------+-------------------------+
1 row in set (0.01 sec)


mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.0.22-community-max-nt |
+-------------------------+
1 row in set (0.08 sec)

Jika kita melihat bilangan ‘5.0.x’, berarti strored procedure akan bekerja.


Contoh database

Menggunakan database dbjual:
USE dbjual;

mysql> select * from barang;
+------+--------------------+-------+--------+--------+
| 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.09 sec)



Memilih delimiter

mysql> DELIMITER //

Delimiter adalah karakter atau string yang memberi tahu MySQL bahwa kita telah selesai menulis statemen SQL. Sebelumnya, delimiter selalu semicolon (tanda ;). Hal ini diperlukan karena stored procedure terdiri atas sejumlah statemen, dan setiap statemen harus diakhiri dengan semicolon.

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

Contoh OUT




INOUT




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 suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value).
Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa.

Bentuk Umum :

CREATE OR REPLACE FUNCTION nama_function (parameter_1, …)
RETURN tipe_data AS
variabel_1 tipe_data;

BEGIN
statemen_1;

RETURN nilai_yang_dikembalikan;
END;

Statemen RETURN tipe_data diatas menunjukkan bahwa function akan mengembalikan nilai dengan tipe data tertentu
Statemen RETURN nilai_yang_dikembalikan berfungsi untuk mengembalikan nilai yang telah diproses dalam function

Contoh Function Tanpa Parameter :
(1)
CREATE OR REPLACE FUNCTION tulis_teks RETURN VARCHAR2 AS
S VARCHAR2(20)
BEGIN
S := ‘HALLO SEMUA’;
RETURN S;
END;
/

(2)
SET SERVEROUTPUT ON
DECLARE
X VARCHAR2(20);
BEGIN
X := tulis_teks;
DBMS_OUTPUT.PUT_LINE(X);
END;
/

Contoh Function Dengan Parameter :
(1)
CREATE OR REPLACE FUNCTION
pangkat (bil INTEGER, n INTEGER)
RETURN INTEGER AS
HASIL INTEGER(10);
I INTEGER;
BEGIN
HASIL := 1;
FOR I IN 1..n LOOP
HASIL := HASIL * bil;
END LOOP;
RETURN HASIL;
END;
/

(2)
SET SERVEROUTPUT ON
DECLARE
H INTEGER;
BEGIN
H := pangkat(2, 3);
DBMS_OUTPUT.PUT_LINE(‘Hasil = ‘ || TO_CHAR(H));
END;
/

Contoh Function Dalam Function :
(1)
CREATE OR REPLACE FUNCTION kuadrat (X NUMBER)
RETURN NUMBER AS
HASIL NUMBER(10);
BEGIN
HASIL := X * X;
RETURN HASIL;
END;
/

(2)
CREATE OR REPLACE FUNCTION determinan
(a NUMBER, b NUMBER, c NUMBER)
RETURN NUMBER AS
D NUMBER(10);
BEGIN
D := kuadrat(b) – (4 * a * c);
RETURN D;
END;
/

(3)
SET SERVEROUTPUT ON
DECLARE
D NUMBER(10);
BEGIN
D := determinan(1, 1, -6);
DBMS_OUTPUT.PUT_LINE(‘Nilai determinan = ‘ || TO_CHAR(D));
END;
/
TRIGGER
Trigger adalah prosedur tersimpan yang secara otomatis dijalankan apabila data di dalam tabel berubah karena eksekusi perintah SQL INSERT, UPDATE, atau DELETE. Salah satu dari penggunaannya yang paling umum adalah untuk menerapkan pembatasan yang lebih kompleks dari yang telah diijinkan melalui pembatasan CHECK, yang berfungsi membatasi informasi yang disisipkan ke dalam kolom. Trigger bisa dibuat bersama dengan perintah INSERT, yang akan melakukan query ke tabel lain dan mengembalikan nilai logik yang membantu membatasi data yang diberikan kepada kolom tertentu.
Sebagai contoh trigger bisa dibuat untuk menjalankan replikasi misalnya apabila sebuah baris disisipkan ke dalam databse Z, maka sebuah baris dengan informasi yang sama akan ditambahkan ke dalam database Y. Atau apabila sebuah baris dihapus dari sebuah tabel maka trigger akan menghapus baris lain yang berhubungan dengan baris tersebut pada tabel lain. Trigger dibuat sebagai sebuah transaksi dan bisa dimundurkan apabila ada masalah yang dideteksi.
Trigger dieksekusi jika terjadi suatu database “event”
Database event adalah : Insert, Update dan Delete.
Trigger akan beraksi jika terjadi , misalnya :
- Sebuah baris baru(record) dimasukkan ke tabel.
- Peremajaan record
- Penghapusan record
Hal ini disebabkan sebuah trigger terdiri atas :
- Uraian kapan trigger dilepaskan
- Tabel yang diasosiasikan dengan trigger tersebut.
- Program Transact-SQL yang dijalankan oleh Trigger tersebut.
Syntax Trigger :
CREATE TRIGGER trigger_name ON table { {FOR { [DELETE] [,] [UPDATE] [,][INSERT] } [NOT FOR REPLICATION] AS
sql_statement [...n] } | {FOR { [INSERT] [,] [UPDATE] } [NOT FOR REPLICATION] AS { IF UPDATE (column) [{AND | OR} UPDATE (column)] [...n] | IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask) { comparison_operator} column_bitmask [...n] } sql_statement [...n] } }
Jika menggunakan event :
- For Insert
Trigger aktif pada saat record baru
- For Update
Trigger aktif pada saat record diubah
- For Delete
Trigger aktif pada saat record dihapus
Untuk melihat efek trigger, berikut adalah contoh sebuah tabel sederhana. Trigger akan dilepaskan, setiap kali tabel tersebut diisi dengan record baru.
Contoh Trigger For Insert :
Create table pegawai
(no_peg int Primary Key,
nama varchar(16)
)
Create Trigger tra_inspeg
On pegawai
For Insert
As
Print “Record baru : “+
Convert(char(30), getdate(),103)
Select * from inserted
Trigger akan dibuat dan setiap kali sesudah record baru diisi ke tabel,maka program trigger akan aktif. Di dalam trigger secara implisit dapat diakses “koleksi” record yang dimasukkan (“inserted”) maupun kumpulan record yang dihapus (“deleted”).
Record tersebut masuk ke dalam tabel virtual yang bernama “Inserted” dan “Deleted”.
Pada kasus “Insert” hanya ada tabel virtual “Inserted”, sedangkan pada “Delete” hanya terdapat tabel virtual “Deleted”.
Untuk “Update” muncul 2 buah tabel virtual, record yang lama masuk ke tabel “Deleted”, sedangkan record yang baru masuk ke tabel virtual “Inserted”.

  1. Update 
CREATE TRIGGER Update_phoneName ON authors
FOR UPDATE AS
DECLARE @AuthorID VARCHAR(11)
DECLARE @NewphoneName VARCHAR(50)
SELECT @AuthorID = (SELECT _id FROM Inserted)
SELECT @NewphoneName = (SELECT lName + ', ' +au_fName FROM Inserted)
UPDATE TriggerTest SET au_name = @NewphoneName WHERE no_phne = @AuthorID
-------------------------------------
UPDATE authors SET au_fname = 'Fifi'
WHERE no_phne = '08933833939'


      2. Insert

CREATE TABLE [dbo].[TriggerTest]
([au_id] [int] NULL,
[au_name] [varchar] (50))
-------------------------------------
CREATE TRIGGER Insert_phoneName ON authors
FOR INSERT AS
DECLARE @AuthorID VARCHAR(11)
DECLARE @phoneName VARCHAR(50)
SELECT @AuthorID = (SELECT au_id FROM Inserted)
SELECT @ConcatName = (SELECT au_lName + ', ' + au_fName FROM Inserted)
INSERT TriggerTest values (@AuthorID,@ConcatName)
-------------------------------------
INSERT authors (no_phne, au_lname, au_fname, contract)
VALUES ('08933833939', 'Fifi', 'Pixy', 1)


        3. DELETE

CREATE TRIGGER Delete_phoneName
ON authors FOR DELETE AS
DECLARE @AuthorID VARCHAR(11)
SELECT @AuthorID =
(SELECT au_id FROM Deleted)
DELETE FROM TriggerTest WHERE phone = @AuthorID
-------------------------------------
DELETE FROM authors WHERE au_lname = 'Fifi'




Rabu, 21 September 2011

Resume Visualisasi Informasi Pertemuan 2

Nama/NIM : Fitriana Faristia / 10.41010.0206
Dosen         : Ach Teguh


Hubungan antara Words dan Images 

Semiotika

Semiotika adalah cabang ilmu yang semula berkembang dalam bidang bahasa.Dalam perkembangannya kemudian semiotika bahkan merasuk pada semua segikehidupan umat manusia. Semiotika menurut Zoest (1992) adalah studi tentang tanda dan segala yang berhubungan dengannya; cara berfungsinya, hubungannya dengan tanda-tanda yang lain, pengirimannya dan penerimaannya oleh mereka yang mempergunakannya.
Charles Sanders Peirce (Zoest, 1992), ahli filsafat dan tokoh terkemuka dalam semiotika modern Amerika menegaskan bahwa manusia hanya dapat berfikir dengan sarana tanda, manusia hanya dapat berkomunikasi dengan sarana tanda. Tanda yang dimaksud dapat berupa tanda visual yang bersifat non-verbal, maupun yang bersifat verbal.
Semiotika adalah ilmu tanda, istilah ini berasal dari kata Yunani semeion yang berarti “tanda”. Winfried Noth (1993:13) menguraikan asal-usul kata semiotika; secara etimologi semiotika dihubungkan dengan kata Yunani sign = sign dan signal = signal, sign .
Tanda terdapat dimana-mana : ‘kata’ adalah tanda, demikian pula gerak isyarat, lampu lalu lintas, bendera dan sebagainya. Struktur karya sastra, struktur film, bangunan (arsitektur) atau nyanyian burung dapat dianggap sebagai tanda. Segala sesuatu dapat menjadi tanda.
Dalam kehidupan sehari-hari kita tanpa sadar telah mempraktekkan semiotika atau semiologi dalam komunikasi. Misalkan saja ketika kita melihat lampu lalu lintas yang menunjukkan warna merah maka otomatis kita menghentikan kendaraan kita, dan kita memaknai lampu hijau artinya jalan. Atau pada rambu-rambu lalu lintas tanda P dicoret maka kita tahu bahwa kita tidak boleh memarkirkan kendaraan di lokasi tersebut. Ketika kita memaknai tanda P dicoret itu, kita telah berkomunikasi, kita telah melakukan proses pemaknaan terhadap tanda (sign) tersebut.
Dalam komunikasi massa, semua bentuk dan isi media massa pada dasarnya adalah tanda. Iklan adalah tanda, berita adalah tanda, foto adalah tanda, film adalah tanda, suara penyiar radio adalah tanda, presenter adalah tanda, bahkan pesawat televisi itu sendiri juga merupakan tanda.
Menurut John Fiske (1990) semiologi memiliki tiga bidang studi utama. Pertama, tanda itu sendiri. Hal iini terdiri atas studi tentang berbagai tanda yang berbeda, cara tanda-tanda yang berbeda itu dalam menyampaikan makna, dan cara tanda-tanda itu terkait dengan manusia yang menggunakannya. Tanda adalah konstruksi manusia dan hanya bisa dipahami dalam artian manusia yang menggunakannya. Kedua, kode atau sistem yang mengorganisasikan tanda. Studi ini mencakup cara berbagai kode dikembangkan guna memenuhi kebutuhan suatu masyarakat atau budaya atau untuk mengekspolitasi saluran komunikasi untuk mentransmisikannya. Ketiga, kebudayaan atau tempat kode tanda bekerja. Ini gilirannya tergantung pada penggunaan kode-kode dan tanda-tanda itu untuk keberadaan dan bentuknya sendiri.
Dalam semiologi, penerima atau pembaca pesan, dipandang memiliki peran yang aktif, dibandingkan dalam paradigma transmisi di mana mereka dianggap pasif. Semiologi lebih suka memilih istilah “pembaca” untuk komunikan, karena “pembaca” pada dasarnya aktif dalam menciptakan pemaknaan teks atau tanda (sign) dengan membawa pengalaman, sikap, emosi terhadap teks atau tanda tersebut (Fiske, 1990).
Diantara sekian banyak pakar tentang semiotika ada dua orang yaitu Charles Sanders Peirce (1839-1914) dan Ferdinand de Saussure (1857-1913) yang dapat dianggap sebagai pemuka-pemuka semiotika modern (Noth 1990:39). Kedua tokoh inilah yang memunculkan dua aliran utama semiotika modern : yang satu menggunakan konsep Peirce dan yang lain menggunakan konsep Saussure. Ketidaksamaan itu mungkin terutama disebabkan oleh perbedaan yang mendasar : Peirce adalah ahli filsafat dan ahli logika, sedangkan Saussure adalah cikal-bakal linguistik umum. Pemahaman atas dua gagasan ini merupakan syarat mutlak bagi mereka yang ingin memperoleh pengetahuan dasar tentang semiotika.
Menurut Peirce kata ‘semiotika’, kata yang sudah digunakan sejak abad kedelapan belas oleh ahli filsafat Jerman Lambert, merupakan sinonim kata logika. Logika harus mempelajari bagaimana orang bernalar. Penalaran, menurut hipotesis Pierce yang mendasar dilakukan melalui tanda-tanda. Tanda-tanda memungkinkan manusia berfikir, berhubungan dengan orang lain dan memberi makna pada apa yang ditampilkan oleh alam semesta. Semiotika bagi Pierce adalah suatu tindakan (action), pengaruh (influence) atau kerja sama tiga subyek yaitu tanda (sign), obyek (object) dan interpretan (interpretant).
Di sisi lain, Saussure mengembangkan bahasa sebagai suatu sistim tanda. Semiotik dikenal sebagai disiplin yang mengkaji tanda, proses menanda dan proses menandai. Bahasa adalah sebuah jenis tanda tertentu. Dengan demikian dapat dipahami jika ada hubungan antara linguistik dan semiotik. Saussure menggunakan kata ‘semiologi’ yang mempunyai pengertian sama dengan semiotika pada aliran Pierce. Kata Semiotics memiliki rival utama, kata semiology. Kedua kata ini kemudian digunakan untuk mengidentifikasikan adanya dua tradisi dari semiotik. Tradisi linguistik menunjukkan tradisi-tradisi yang berhubungan dengan nama-nama Saussure sampai Hjelmslev dan Barthes yang menggunakan istilah semiologi. Sedang yang menggunakan teori umum tentang tanda-tanda dalam tradisi yang dikaitkan dengan nama-nama Pierce dan Morris menggunakan istilah semiotics. Kata Semiotika kemudian diterima sebagai sinonim dari kata semiologi (Istanto, 2000).
Ahli-ahli semiotika dari aliran Saussure menggunakan istilah-istilah pinjaman dari linguistik. Pada masa sesudah Saussure, teori linguistik yang paling banyak menandai studi semiotik adalah teori Hjelmslev, seorang strukturalist Denmark. Pengaruh itu tampak terutama dalam ‘semiologi komunikasi’. Teori ini merupakan pendekatan kaum semiotika yang hanya memperhatikan tanda-tanda yang disertai maksud (signal) yang digunakan dengan sadar oleh mereka yang mengirimkannya (si pengirim) dan mereka yang menerimanya (si penerima). Para ahli semiotika ini tidak berpegang pada makna primer (denotasi) tanda yang disampaikan, melainkan berusaha untuk mendapatkan makna sekunder (konotasi) (Istanto, 2000).
Menurut Saussure, tanda mempunyai dua entitas, yaitu signifier (signifiant / wahana tanda / penanda / yang mengutarakan / simbol) dan signified (signifie / makna / petanda / yang diutarakan / thought of reference). Tanda menurut Saussure adalah kombinasi dari sebuah konsep dan sebuah sound-image yang tidak dapat dipisahkan. Hubungan antara signifier dan signified adalah arbitrary (mana suka). Tidak ada hubungan logis yang pasti diantara keduanya, yang mana membuat teks atau tanda menjadi menarik dan juga problematik pada saat yang bersamaan (Berger, 1998: 7-8).
Menurut Peirce (dalam Hoed,1992) tanda adalah sesuatu yang mewakili sesuatu. Sesuatu itu dapat berupa pengalaman, pikiran, gagasan atau perasaan. Jika sesuatu, misalnya A adalah asap hitam yang mengepul di kejauhan, maka ia dapat mewakili B, yaitu misalnya sebuah kebakaran (pengalaman). Tanda semacam itu dapat disebut sebagai indeks; yakni antara A dan B ada keterkaitan (contiguity). Sebuah foto atau gambar adalah tanda yang disebut ikon. Foto mewakili suatu kenyataan tertentu atas dasar kemiripan atau similarity (foto Angelina Jolie, mewakili orang yang bersangkutan, jadi merupakan suatu pengalaman). Tanda juga bisa berupa lambang, jika hubungan antara tanda itu dengan yang diwakilinya didasarkan pada perjanjian (convention), misalnya lampu merah yang mewakili “larangan (gagasan)” berdasarkan perjanjian yang ada dalam masyarakat. Burung Dara sudah diyakini sebagai tanda atau lambang perdamaian; burung Dara tidak begitu saja bisa diganti dengan burung atau hewan yang lain, dan seterusnya (Istanto, 2000).
Ketika semua bentuk komunikasi adalah tanda, maka dunia ini penuh dengan tanda. Ketika kita berkomunikasi, kita menciptakan tanda sekaligus makna. Dalam perspektif semiologi atau semiotika, pada akhirnya komunikasi akan menjadi suatu ilmu untuk mengungkapkan pemaknaan dari tanda yang diciptakan oleh proses komunikasi itu sendiri.

semantik

semantik merupakan ilmu tentang makna suatu kata atau kalimat. Kata berasal dari bahasa yang memiliki hubungan erat dengan masyarakat penuturnya. Dengan demikian, analisis semantik pada suatu bahasa, belum tentu dapat digunakan pada bahasa lainnya. Apalagi, menurut data UNESCO, di dunia terdapat lebih dari 6.000 bahasa dengan berbagai kosakata dan kaidah penggunaan yang berbeda.
Pada generasi web semantik, kecerdasan piranti lunak—yang sejatinya dibuat oleh programer—harus dapat memaknai beragam kata dari berbagai bahasa. Misalnya, mampu membedakan bahwa kata bisa dalam kalimat “saya bisa menulis” dan “bisa ular ganas” memiliki makna yang berbeda. Atau, kata “wanita” dan “perempuan” memiliki makna yang sama.



 Sintaktik

Sintaktik berasal dari bahasa Yunani “Suttatein” yang artinya mengatur, mendisiplinkan, menyeragamkan. pengolahan/seleksi untuk mencapai keberaturan dan keserasian sebagai satu kesatuan bahasa bentuk, sistem visual, gaya visual 
Mis : dalam sign-system ada kesamaan penggunaan sistem visual, lay out surat kabar harian meski isinya beda tiap terbit namun keberaturan lay out yang sinambung membina rubrikasi bagi pembaca 
Dalam aspek sintaktik keberaturan dan keseragaman sebuah desain diatur dalam teori konstanta dan variabel:
KONSTANTA : unsur yang menyamakan
VARIABEL : unsur yang membedakan




Pendekatan pragmatik(pragmatis approach)

Dalam kamus sosiologi kata pragmatik (prgmatics) diartikan sebagai telaah terhadap hubungan antara tanda-tanda dengan penggunaannya, sedangkan pragmatisme (pragmatism) diartikan sebagai suatu ajaran yang menyatakan bahwa arti suatu proposisi tergantung pada akibat-akibat praktisnya.
Pendekatan pragmatik adalah pendekatan yang memandang karya sastra sebagai sarana untuk menyampaikan tujuan tertentu kepada pembaca. Dalam hal ini tujuan tersebut dapat berupa tujuan politik, pendidikan, moral, agama maupun tujuan yang lain. Dalam praktiknya pendekatan ini cenderung menilai karya sastra menurut keberhasilannya dalam mencapai tujuan tertentu bagi pembacanya (Pradopo, 1994).
Pendapat Horatius yang ditulis dalam bukunya Ars Poetica pada tahun 14 SM menyatakan bahwa tolok ukur sastra ialah utile ‘bermanfaat’ dan dulce ‘nikmat’. Selain itu, ia pun sekaligus mengungkapkan pendekatan sastra yang menitikberatkan pada peran pembaca (pendekatan pragmatik) dalam pendekatan teori Barat, sering dipermasalahkan urutan utile dan dulce itu, mana yang harus didahulukan, ‘bermanfaat’ dahulu baru ‘nikmat’ atau justru sebaliknya ‘nikmat’ dulu baru ‘bermanfaat’ – masalah antara pendekatan moralis (manfaat) dan estetik (nikmat), namun hal ini barangkali lebih tepat disebut perbedaan dalam tekanan (estetik baru tersendiri pada zaman romantik di dunia Barat).
Pendapat bahwa seni sebagai struktur yang dilandasi ciri khasnya sebagai sign ‘tanda’ yang baru mendapat makna lewat persepsi pembaca dipelopori oleh Jan Mukarovsky dan muridnya Felix Vodicka.
Meskipun sudah dilancarkan sejak tahun tiga puluhan, pendapat ini baru dikenal pada tahun enam puluhan di Eropa melalui terjemahan dalam bahasa Inggris (dari bahasa Rusia) dan sejak itulah perhatian atau penekanan teks sebagai struktur (strukturalisme) bergeser ke arah pembaca yang dilandasi antara lain oleh teori konkretisasi dari Vodicka. Konsep ini berasal dari Roman Ingarden yang menyatakan bahwa karya sastra mempunyai kemandirian terhadap kenyataan dan bersifat skematik-selektif, tidak pernah menciptakan gambar (dunia) yang bulat lengkap setiap membayangkan kenyataan. Dalam setiap karya sastra terdapat Unbesttimmtheitsstellen’tempat-tempat yang tidak tertentu atau kosong’, yang tidak terisi oleh karya sastra dan pengisiannya terserah kepada pembaca menurut kemampuan dan seleranya. Inilah yang disebut konkretisasi namun, menurut Ingarden, hal ini dibatasi oleh struktur karya seni yang singkat secara objektif.


Daftar Pustaka:
Berger, Arthur Asa, Media Analysis Techniques, 2nd edition, Thousand Oakes: Sage, 1998.
Fiske, John, Introduction to Communication Studies, 2nd edition, London: Routledge, 1990
Istanto, Freddy H., Rajutan Semiotika untuk Sebuah Iklan; Studi Kasus Iklan Long Beach, Jurnal Nirmana Vol. 2, No. 2, Juli 2000

Selasa, 20 September 2011

Materi Stored Procedures, Functions dan Trigger pada SQL Server

NAMA/NIM  : Fitriana Faristia / 10.41010.0206
Dosen             : Tan Amelia
Tugas              : Materi Stored Procedures, Functions dan Trigger pada SQL Server

Setiap database mempunyai fasilitas yang memungkinkan aplikasi-aplikasi
untuk menyimpan dan memanipulasi data. Selain itu, database juga memberikan
fasilitas lain yang lebih spesifik yang dipakai untuk menjamin konsistensi hubungan
antar tabel dan integritas data di dalam database. Referential integrity merupakan
sebuah mekanisme untuk mencegah putusnya hubungan master/detail. Jika user
mencoba menghapus sebuah field pada tabel master sehingga record di tabel detail
menjadi yatim (tidak mempunyai induk), referential integrity akan mencegahnya.
Trigger, Stored Procedure/Function, dan View merupakan komponen dan fitur
database, yang dengan keunikan fungsi masing-masing dapat dimanfaatkan untuk
menjaga, mengelola, dan membantu kinerja database engineer dalam upaya
terjaminnya integritas sebuah database.


Stored Prosedure

Adalah suatu subprogram atau sekelompok statemen Transact-SQL, yang tersimpan dan menyatu dalam suatu database. Stored procedure dibuat dalam SQL Server, bukan di computer client, dan akan menyatu dengan suatu database dalam server.
Stored procedure dapat diakses program aplikasi melalui object-object tertentu pada program aplikasi masing-masing. Sebagai contoh, pada Visual Basic dan Delphi, stored procedure dapat diakses pada computer client melalui object Adodc.
Saat dieksekudi (dipanggil) dari program aplikasi seperti VB dan Delphi maka baris-baris dalam stored procedure akan dilaksanakan di komputer server dan hasilnya dikirimkan ke computer client. Dengan demikian akan terjadi pembagian kerja antara client dan server serta aktivitas lalu lintas jaringan terkurangi. Akibatnya untuk kerja client-server meningkat dan semakin efisien.
Stored procedure tersimpan dalam database dalam bentuk kode yang sudah terkompilasi sehingga prosesnya menjadi lebih cepat.

Kemampuan utama SQL Server berada pada Store Procedure dan Fungsi (Fungsi hanya terdapat pada SQL Server 2000)
Dengan adanya Store Procedure, maka program SQL yang telah kita buat :

Dapat digunakan kapanpun

Seperti halnya pembuatan prosedur pada C++ / Pascal / Java atau pemrograman yang lain, apabila pembuatan program bersifat modular (dibuat kecil untuk setiap maksud/tujuan), akan lebih baik apabila pemrograman tesebut menggunakan banyak prosedur. Dengan dibuat terpisah, kapanpun diinginkan, hanya tinggal memanggil program tersebut.

Lebih cepat dan efisien

Untuk program yang besar, pembuatan program Server Side, terasa lebih mudah dibandingkan Client Side. Dengan Server Side, program lebih bersifat Netral terhadap semua aplikasi. Disisi Programer, ia tidak perlu mengetahui terlalu mendalam terhadap suatu program aplikasi seperti VB, Delphi, Java , C++ Builder, PHP, ASP, J2ME, WAP, SMS dsb. karena tugas–tugas tersebut sebenarnya dapat dilakukan oleh Server (dalam hal ini SQL Server) VB, Delphi, Java , C++ Builder PHP, ASP, J2ME, WAP, SMS dsb tersebut hanyalah User interface/tampilan belaka, yang hanya berfungsi untuk menampilkan data, memasukkan data, serta memberikan parameter-parameter yang dibutuhkan oleh server untuk menghapus , mengubah, skeduling, backup dan sebagainya. Sedangkan program yang sesungguhnya berada pada Server tersebut.

Mudah dibuat dan dirawat karena kecil tapi ‘Power Full’

Kecil dan PowerFull, akan diperlihatkan pada beberapa contoh berikutnya.

Sintak SQL dalam Store Procedure

CREATE PROCEDURE nama_stored_procedurenya @parameter1 tipe_data, @parameter2 2 tipe_data AS isi procedurenya.
Penjelasan
1. nama stored_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 gunakan perintah CREATE, untuk mengedit gunakan ALTER , 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. Untuk deklarasi parameter di Stored Procedure gunakan DECLARE
contoh : DECLARE @StartDate datetime, @EndDate datetime, dst..
5. Untuk memasukkan nilai ke sebuah parameter, gunakan SET atau SELECT, contoh :
SET @nama='Itanium' 
SET @Web='Klik-kanan' (perintah SET hanya bisa untuk 1 variabel saja)
SELECT @nama='Itanium', @Web='Klik-kanan' (perintah SELECT bisa digunakan untuk banyak variabel)

6. Untuk mengambil nilai dari sebuah field dari tabel ke dalam variabel dapat juga menggunakan SET / SELECT , misal : SET @nama= SELECT nama FROM user WHERE login='Itanium') selalu gunakan anda(),perintah ini valid bila data yang ditemukan hanya 1, bila lebih, maka varibale @nama tidak akan ada nilai nya.
7. Untuk mengambil data dalam jumlah banyak, misal seperti array atau StringList, gunakan temporary tabel.untuk pembahasan lebih lengkap, tunggu posting berikut nya.
Contoh pembuatan Stored Procedure. Kita akan membuat sebuah Stored procedure yang berfungsi untuk menggantikan perintah SELECT yang rumit, misal untuk laporan stok barang.
3.      Contoh Store Procedure.
Dalam contoh ini ada 3 tabel yang digunakan :

1. Barang (IDBarang, NamaBarang, IDSatuan).

2. Satuan (IDSatuan, Satuan).

3. StockBarang (Tanggal, IDBarang, SAwal,Masuk,Keluar,SAkhir) laporan yang diminta adalah untuk menampilkan stock sesuai dengan periode tertentu (bisa per hari, bisa juga per minggu, tergantung inputan StartDate dan EndDate). SQL untuk pembuatan Stored Procedure nya :
CREATE PROCEDURE LapStockBarang1 @StartDate varchar(10), @EndDate varchar(10) AS

DECLARE @tgl1 datetime, @tgl2 datetime 

**(variabel StartDate tidak bisa langsung datetime karena perintah EXEC LapStockBarang dalam bentuk string)

CREATE TABLE #TStock (IDBarang varchar(5), SAwal real, Masuk real, Keluar real)

CREATE TABLE #TStock2 (IDBarang varchar(5), SAwal real, Masuk real, Keluar real, SAkhir real)

** buat temporary table , tanda # menandai bahwa tabel ini hanya akan ada saat proses stored procedure.



SELECT@tgl1=CONVERT(datetime,@StartDate,103),@tgl2=CONVERT(datetime,@EndDate,103)

** convert varchar(string) ke tipe datetime, gunakan perintah CONVERT(tipe,variabel,format). Format 103 adalah format dd/mm/yyyy

INSERT INTO #TStock (IDBarang, SAwal)

SELECT (IDBarang, SAwal)

FROM StockBarang 

WHERE tanggal= @tgl1

** masukkan saldo awal pada tanggal bulan itu

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 dari masuk dan keluar

INSERT INTO #TStock2 (IDBarang, SAwal, Masuk, Keluar)

SELECT IDBarang, SUM(SAwal), SUM(Masuk), SUM(Keluar)

FROM #TStock

GROUP BY IDBarang

** sekarang gabungkan 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



Trigger

Trigger adalah bentuk khusud dari suatu Stored Procedure yang dilaksanakan secara otomatis pada saat atau sesudah modifikasi data (UPDATE, INSERT, dan DELETE). Trigger dipakai untuk menjaga integritas data dan mengimplementasikan aturan bisnis yang kompleks. Trigger dibuat dengan memakai bahasa Transact-SQL atau SQL Enterprise Manager. Tugas-tugas manajemen Trigger meliputi mengubah, mengganti nama, menampilkan, menghapus dan membuat Trigger tidak aktif.
Trigger memakai dua tabel maya yaitu Inserted dan Deleted untuk mendeteksi modifikasi data. Untuk memprogram Trigger, Anda harus mendalami kedua tabel tersebut dan bahasa Transact-SQL. Untuk menjaga integritas data, Anda dapat memakai beberapa alternatif, yaitu Trigger atau Konstrain (Rule). Anda juga dapat memakai kunci utama dan kunci unik untuk mengidentifikasi baris dalam sebuah tabel secara unik. Anda juga dapat memakai nilai default dan domain untuk membatasi nilai-nilai yang diperbolehkan pada sebuah kolom. Referential Integrity dipakai untuk menjamin keabsahan hubungan antar tabel. Sebaliknya Anda memakai konstrain-konstrain tersebut sebelum memilih Trigger, karena Trigger dapat melakukan proses yang lebih rumit tetapi beban sistem lebih berat.

Pakailah Trigger untuk kasus-kasus berikut:
- Jika pemakaian cara deklaratif tidak dapat memenuhi kebutuhan yang diperlukan. Misalnya, buatlah Trigger untuk mengubah sebuah nilai numerik dalam tabel jika sebuah record di dalam tabel tersebut dihapus.
- Sebuah perubahan harus mengubah tabel-tabel lain yang terhubung. Misalnya jika data order ditambahkan, tabel lain yang menyimpan data stok akan berubah.
- Jika database didenormalisasi dan memerlukan cara otomasi untuk mengubah data redundan yang ada dibeberapa tabel.
- Jika sebuah nilai pada sebuah tabel harus divalidasi dengan data pada tabel lain.
- Jika diperlukan pesan kesalahan dan penangganan kesalahan secara khusus.
Kemampuan-kemampuan yang dimiliki Trigger:
- Trigger dapat menjaga referential integrity dengan melakukan perubahan data atau penghapusan kunci tamu (Foreign Key) di dalam database.
- Trigger dapat bekerja pada beberapa kolom dalam sebuah database bahkan pada objek di luar database. Anda juga dapat memakai Trigger pada View.
- Sebuah Trigger dapat melakukan beberapa aksi dan Trigger dapat diaktifkan oleh beberapa event. Misalnya Anda membuat sebuah Trigger yang akan diaktifkan jika terjadi proses INSERT, UPDATE atau DELETE. Dengan perintah Transact-SQL, Anda dapat mendefinisikan aturan bisnis untuk tiap event.
Selain kemampuan-kemampuan tersebut, Trigger juga mempunyai keterbatasan. Trigger tidak dapat dibuat pada sebuah tabel sistem atau temporer, meskipun perintah di dalama Trigger mengacu ke tabel sistem atau tabel temporer.
Trigger tidak dapat diaktifkan secara manual, tetapi diaktifkan secara otomatis jika terjadi event INSERT, UPDATE, dan DELETE. Dalam Trigger selalu berisi satu atau beberapa event tersebut sebelum perintah Transact-SQL didefinisikan. Tipe-tipe Trigger sesuai dengan event-nya. Misalnya Anda membuat sebuah Trigger UPDATE sehingga jika terjadi pengubahan data pada sebuah tabel, Trigger tersebut dapat diaktifkan. Sebuah Trigger dapat diaktifkan oleh beberapa event.
Pada saat terjadi INSERT atau UPDATE yang diaktifkan Trigger, Trigger menyimpan data baru atau data hasil modifikasi di dalam sebuah tabel yang bernama INSERTED. Jika terjadi DELETE yang mengaktifkan Trigger, data yang dihapus akan tersimpan ditabel yang bernama Deleted. Tabel tersebut berada dimemori dan dibaca oleh Trigger dengan perintah-perintah Transact-SQL. Kemampuan ini penting anda ketahui, karena pada umumnya Trigger membandingkan data dalam tabel Inserted dan Deleted dengan data baru sebelum proses Commit. Dengan kedua tabel tersebut, Trigger dapat melakukan proses Roll-Back.

CONTOH


Syntax
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
biar lebih mengerti, kita mulai dengan contoh.. jadi kita butuh membuat 2 tabel tersebut di SQL server 2005, script sebagai berikut
create table BARANG
(
BAR_ID int not null,
BAR_NAMA varchar(255) not null,
BAR_STOCK int null
default 0,
constraint PK_BARANG primary key (BAR_ID)
)
go

create table PEMBELIAN
(
PEM_ID int not null,
BAR_ID int null ,
PEM_JUMLAH int null ,
constraint PK_PEMBELIAN primary key (PEM_ID)
)
go

create index RELATION_FK on PEMBELIAN (BAR_ID)
go

alter table PEMBELIAN
add constraint FK_PEMBELIA_RELATION_BARANG foreign key (BAR_ID)
references BARANG (BAR_ID)
go

INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (1,’AQUA’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (2,’TOTAL’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (3,’AQUADES’); 


setelah anda menjalankan script tersebut, maka anda akan mempunyai 2 tabel, yaitu tabel barang dengan isi 3 buah data, dan tabel pembelian dengan data masih kosong.3 data di tabel barang tersebut secara defaut stocknya adalah 0
kemudian saatnya kita buat trigger sehingga ketika kita menambahkan data di tabel pembelian dengan jumlah pembelian barang tertentu, maka stock di tabel barang akan bertambah sesuai dengan barang yg dibeli, syntac trigger tersebut adalah sebagai berikut

create trigger tambahStockbarang on pembelian
for insert
as
update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id

arti dari kode tersebut adalah sebagai berikut
create trigger tambahStockbarang on pembelian
membuat trigger dengan nama tambahStockBarang dimana trigger tersebut akan terpicu jika ada perubahan di tabel pembelian
for insert
as

perubahan tersebut adalah penambahan(insert) di tabel pembelian , selain penambahan bisa juga diisi dengan perubahan(update) atau penghapusan(delete)
for disini juga bisa rubah isinya jadi after atau instead of . perbedaanya adalah waktu trigger dikerjakan, biasaya yg sering digunakan adalah for
update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id

ini adalah kode yg dikerjakan ketika kejadian trigger terpicu, kode diatas bertujuan merubah nilai bar_stock pada tabel barang dengan menambahkan nilai bar_stock yg sekarang dengan jumlah barang yg dibeli (pem_jumlah). perhatikan disini ada tabel yang bernama inserted, tabel tersebut merupakan tabel logika yg digunakan untuk menyimpan data yang memicu terjadinya trigger, dalam hal ini nilai data yg dimasukkan(insert) kedalam tabel pembelian, selain inserted, tabel logika lainnya adalah deleted, tabel logika ini digunakan untuk trigger yg terpicu dengan kejadian delete
kita coba masukkan kode berikut:

INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (1,1,4);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (2,3,2);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (3,1,1);

arti kode tersebut
pem_id haruslah beda karena merupakan primary key
beli aqua(kode bar_id=1) sebanyak 4
beli aquades (kode bar_id=3) sebanyak 2
beli aqua lagi sebanyak 1
sehingga secara keseluruhan yg dibeli aqua sebanyak 5 dan aquades sebanyak 2
karena default nilai stock barang adalah 0, maka seharusnya nilai aqua 5 dan aquades 2 adalah jumlah stock barang sekarang ini
dan kita lihat data barang…




Function



Function adalah suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value).
Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa.

contoh fungsi untuk mendapatkan volume balok
mysql> create function volume (panjang int, lebar int, tinggi int) returns int d
eterministic
-> begin
-> declare volum int;
-> set volum = panjang * lebar * tinggi;
-> return volum;
-> end$
Query OK, 0 rows affected (0.00 sec)

untuk melihat hasil dari fungsi yang dibuat
mysql> select volume(12, 13, 2)$
+-------------------+
| volume(12, 13, 2) |
+-------------------+
| 312 |
+-------------------+
1 row in set (0.00 sec)

contoh lain
CREATE TABLE `data_siswa`.`tbl_siswa` (
`nis` char(10) NOT NULL,
`nama` varchar(255) NOT NULL,
`kelas` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1


function untuk mengembalikan jumlah data dari setiap kelas

DELIMITER $$
CREATE FUNCTION sf_tampil_siswa_kelas (p_kelas int) RETURNS INT DETERMINISTIC

BEGIN
DECLARE jml INT;
SELECT COUNT(*) AS jml_kelas INTO jml FROM tb_siswa WHERE kelas = p_kelas;
RETURN jml;
END$$

DELIMITER;
 * DELIMITER = adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$

  * CREATE FUNCTION = adalah header untuk membuat function

  * RETURNS = adalah untuk menentukan tipe data yang di return-kan oleh function

  * DETERMINISTIC/ NOT DETERMINISTIC = adalah untuk menentukan yang bisa menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not determinisric).

  * BEGIN END = adalah body dari function jadi semua SQL nya di tulis disini.

contoh pemanggilannya seperiti dibawah ini:
select sf_tampil_siswa_kelas("2");
sebuah function hanya bisa memberikan return berupa nilai saja dan tidak bisa berupa resutlset
untuk penulisan DETEMINISTIC bisa ditulis secara implisit dengan memberikan setting global pada mysql dan secara default benilai NOT DETEMINISTIC , caranya dibawah ini:
SET GLOBAL log_bin_trust_function_creators = 1;

 

Twitter Delicious Facebook Digg Stumbleupon Favorites More