Programatic SQL Programatic SQL Programatic SQL dibagi menjadi dua tipe : Embedded SQL Statements kalimat SQL disimpan secara langsung ke dalam kode sumber program dan dicampur dengan kalimat bahasa host. Ada dua tipe embedded SQL yakni embedded SQL yang static dimana keseluruhan kalimat SQL di kenal di program tempat ditulis dan embedded SQL yang dinamis yang mengijinkan semua bagian kalimat SQL di spesifikasi pada saat dijalankan. Application Programming Interface (API) suatu teknik alternative yang menyediakan programmer suatu set standar fungsi yang dapat di panggil dari software. Simple Embedded SQL Statements Tipe embedded SQL yang simple tidak menghasilkan query yakni tidak ada SELECT statement, berupa INSERT, UPDATE, DELETE, CREATE TABLE. Beberapa konsep Embedded SQL statement : Embedded SQL statement dimulai dengan suatu identifier yang biasanya suatu keyword EXEC SQL yang diartikan dalam standar ISO (‘@SQL pada MUMPS ’) Embedded SQL statement diakhiri dengan suatu terminator yang bebas dalam host language Embedded SQL statement dapat dilanjutkan melebih satu baris, menggunakan tanda lanjutan dari host language. Simple Embedded SQL Statements Embedded SQL statement dapat muncul di mana saja dimana pada host language yang muncul. Embedded statement (CONNECT, CREATE TABLE dan COMMIT) sama dimasukkan secara interaktif. SQL Communications Area SQLCA merupakan struktur data yang terdiri dari variable error dan status indicator. DBMS menggunakan SQL Communications Area (SQLCA) untuk melaporkan kesalahan pada waktu dijalankannya pada program aplikasi. SQL Communications Area SQLCODE yang diset oleh DBMS : SQLCODE dari nol mengindikasikan kalimat dijalankan sukses (walau terdapat pesan peringatan pada sqlwarn) SQLCODE negative mengindikasikan bahwa terjadi kesalahan. Nilai dari SQLCODE mengindikasikan kesalahan spesifik yang terjadi. SQLCODE positif mengindikasikan bahwa kalimat dijalankan sukses tetapi kondisi pengecualian terjadi, seperti tidak terdapatnya beberapa baris lebih yang dikembalikan oleh SELECT statement. Statement WHENEVER merupakan petunjuk ke precompiler untuk menghasilkan kode otomatis dalam menangani error setelah kalimat SQL Format dari WHENEVER statement : EXEC SQL WHENEVER <condition><action> Host Language Variables Adalah suatu variable program yang dideklarasikan dalam host language. ini dapat berupa varibel tunggal maupun struktur. Untuk menggunakan variable host dalam embedded SQL statement , nama variable harus diawali colon (:). Sebagai contoh, kita memiliki variable program , increment, mewakili gaji yang meningkat dari staff member SL.21 kemudian kita update gaji member menggunakan kalimat : EXEC SQL UPDATE Staff SET salary=salary + increment WHERE staffNo = ‘SL21’; Indicator variable Tiap variable host mempunyai variable asosiasi indicator yang dapat diset atau diperiksa. Maksud dari variable indicator ini adalah sebagai berikut : Nilai indicator nol berarti variable host yang diasosiasi terdiri dari nilai yang valid A-1 nilai berarti variable host yang diasosiasi harus diasumsikan terdiri dari null (isi actual variable host tidak berhubungan). Nilai indicator positif berarti variable host yang diasosiasikan terdiri dari nilai yang valid yang harus di bulatkan (variable host tidak cukup besar untuk nilai yang dikembalikan) Contoh indicator variable Sebagai contoh , untuk menset alamat column owner CO21 menjadi NULL, kita menggunakan segmen code berikut : EXEC SQL BEGIN DECLARE SECTION char address [51]; short addressInd; EXEC SQL END DECLARE SECTION addressInd=-1 EXEC SQL UPDATE PrivateOwner SET address = addres:addressInd WHERE ownerNo = ‘CO21’; Retrieving Data Using Embedded SQL and Cursors SQL menyediakan mekanisme kepada host language untuk mengakses baris-baris dari query pada saat yang bersamaan. SQL yang melekat terbagi mjd 2 grup : Single-row queries, dimana hasil query mengandung paling banyak 1 baris data. Multi-row queries, dimana hasil query boleh mengandung jumlah baris yang berubah-ubah, bisa kosong, satu, atau lebih. Single-row queries Single-row queries ditangani oleh singleton select statement, yang mempunyai format sama dengan statement SELECT yang dijelaskan pada sesi 5.3, Single-row queries dengan pemakaian klausa INTO yang menspesifikasikan nama dari variable untuk menerima hasil query. Klausa INTO mengikuti list SELECT. Harus ada hubungan korespondensi satusatu diantaranya. Contoh : EXEC SQL SELECT fName,lName,address INTO :firstName, :lastName, :address :addressInd FROM PrivateOwner WHERE ownerNo =’CO21’; Multi-row queries Multi-row queries Ketika query database dapat mengembalikan jumlah baris yang berubah-ubah, SQL menggunakan kursor untuk mengembalikan data. Kursor mengizinkan host language untuk mengakses baris pada hasil query secara bersama-sama Contohnya, untuk mendeklarasikan kursor unutuk mengambil semua property untuk staff dengan nomor SL41, kita dapat menulis : EXEC SQL DECLARE propertyCursor CURSOR FOR SELECT propertyNo, street, city FROM PropertyForRent WHERE StaffNo = ‘SL41’ ; Using Cursor to Modify Data Kursor hanya dapat dibaca (readonly) atau dapat diupdate (updateable). Jika kursor tersebut updateable, standar ISO mengspesifikasikan efek perubahan implementation-independent. Untuk mengupdate data melalui kursor, Oracle memerlukan pemanjangan sampingan pada statement DECLARE CURSOR : EXEC SQL DECLARE cursorName CURSOR FOR selectSTatement FOR UPDATE OF columnName [,…] Format dari kursor berbasisi statement UPDATE adalah : EXEC SQL UPDATE TableName SET columnName = dataVAle [,…] WHERE CURRENT OF propertyCursor ; ISO Standard untuk Embedded SQL SQL Communications Area ISO Standard tidak mengenali SQL Communications Area, tetapi mengenali variable integer SQLCODE. juga mendefinisikan parameter karakter string SQLSTATE, terdiri dari 2 karakter class code diikuti 3 karakter subclass code. Oracle 8 menunjang mekanisme SQL STATE, tetapi untuk menggunakannya kita harus mendeklarasikannya dalam DECLARE SECTION: Char SQLSTATE[6]; Setelah mengeksekusi perintah SQL, system akan mengembalikan status code pada variable SQLSTATE. Status code menunjukkan eksekusi tersebut berhasil, atau menimbulkan error. ISO Standard untuk Embedded SQL Cursors Statement untuk ISO DECLARE CURSOR sebagai berikut: EXEC SQL DECLARE cursorName [INSENSITIVE] [SCROLL] CURSOR FOR selectStatement [FOR] {READ ONLY | UPDATE [OF columnNameList]}]. Dynamic SQL Tipe SQL ini sudah memenuhi untuk banyak aplikasi pemrosesan data. Perbedaan utamanya adalah static SQL tidak mengijinkan host variabel digunakan pada tempat nama tabel atau nama kolom. EXECUTE IMMEDIATE statement Dasar ide dari dynamic SQL adalah untuk menempatkan SQL statement untuk dieksekusi dalam host variabel. Cara termudah untuk melakukannya dengan tidak memakai SELECT statement adalah menggunakan EXECUTE IMMEDIATE statement, dengan format: EXEC SQL EXECUTE IMMEDIATE [hostVariable | stringLiteral] PREPARE dan EXECUTE Statements Format dari PREPARE adalah: EXEC SQL PREPARE statementName FROM [hostVariable | stringLiteral] dan format EXECUTE: EXEC SQL EXECUTE statementName [USING hostVariable [indicatorVariable] [,…] | USING DESCRIPTOR descriptorName] The SQL Description Area Placeholders merupakan satu cara untuk melewati parameter ke pernyataan EXECUTE . SQLDA di gunakan ketita nomor pada placeholders dan type datanya tidak diketahui ketika pernyataan di formulakan Ada 2 pernyataan SQL untuk mengatur dan mengakses struktur ini: DESCRIBE BIND VARIABLE berisi di dlm SQLDA untuk banyak variable khusus yg terapit dalam query DESCRIBE SELECT LIST berisi di dlm SQLDA ke data kolom ketika diharapkan secara dinamik data berubah dan nomor kolom dapat diubah atau type dalam kolom yg tdk diketahui. Pernyataan DESCRIBE Pernyataan DESCRIBE mengembalikan informasi deskriptif tentang persiapan pernyataan sql. Dengan non-SELECT statement, DESCRIBE disusun pada F field dalam SQLDA mjd 0. dengan format penyataan DESCRIBE sebagai berikut : EXEC SQL DESCRIBE BIND VARIABLES FOR statementName INTO bindDescriptorName EXEC SQL DESCRIBE SELECT LIST FOR statementName INTO selectDescriptorName Dimana statementName adalah persiapan penyataan dan bindDescriptionname adalah nama-nama inisial SQLDAs. ISO Standard for Dynamic SQL Beberapa perintah ISO descriptor antara lain: TYPE – type data pada item LENGTH – panjangnya data item INDICATOR – nilai asosiasi indicator DATA – nilai data Beberapa ISO descriptor dengan nama khusus menggunakan GET DESCRIPTOR seperti: PRECISION – digit number SCALE – skala type nomor NAME – nama kolom NULLABLE – jika 1 , maka kolom adl null , jika 0 , maka kolom tidak null
© Copyright 2024 Paperzz