download

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