Nama variabel PL/SQL terdiri dari satu huruf yang opsional diikuti oleh huruf-huruf lain, angka, tanda dolar, garis bawah, dan tanda pagar, dan tidak boleh melebihi 30 karakter. Secara default, nama variabel tidak memperhatikan kapitalisasi huruf. Anda tidak dapat menggunakan kata kunci PL/SQL yang telah dipesan sebagai nama variabel.
Bahasa pemrograman PL/SQL memungkinkan Anda untuk mendefinisikan berbagai jenis variabel, seperti tipe data tanggal, record, koleksi, dll., yang akan kita bahas dalam bab-bab berikutnya. Untuk bab ini, mari kita pelajari hanya jenis variabel dasar.
Variable Declaration in PL/SQL
Variabel-variabel PL/SQL harus dideklarasikan dalam bagian deklarasi atau dalam sebuah paket sebagai variabel global. Saat Anda mendeklarasikan sebuah variabel, PL/SQL mengalokasikan memori untuk nilai variabel dan lokasi penyimpanannya diidentifikasi oleh nama variabel tersebut.
Syntax untuk mendeklarasikan variable
variable_name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT initial_value]
Di mana, variable_name adalah identifier yang valid dalam PL/SQL, datatype harus menjadi tipe data PL/SQL yang valid atau tipe data yang ditentukan pengguna yang sudah kita bahas dalam bab sebelumnya. Beberapa deklarasi variabel yang valid beserta definisinya ditunjukkan di bawah ini:
sales number(10, 2); pi CONSTANT double precision := 3.1415; name varchar2(25); address varchar2(100);
Ketika Anda memberikan batasan ukuran, skala, atau presisi dengan tipe data, itu disebut deklarasi terbatas (constrained declaration). Deklarasi terbatas membutuhkan lebih sedikit memori dibandingkan dengan deklarasi tak terbatas (unconstrained declaration). Contohnya sebagai berikut:
sales number(10, 2); name varchar2(25); address varchar2(100);
Initializing Variables in PL/SQL
Setiap kali Anda mendeklarasikan sebuah variabel, PL/SQL memberikan nilai default NULL kepadanya. Jika Anda ingin menginisialisasi sebuah variabel dengan nilai selain NULL, Anda dapat melakukannya selama deklarasi, menggunakan salah satu dari metode berikut:
- Menggunakan kata kunci DEFAULT:
- Mengunakan operator Assignment
Contoh:
counter binary_integer := 0; greetings varchar2(20) DEFAULT 'Have a Good Day'
Anda juga dapat menentukan bahwa sebuah variabel tidak boleh memiliki nilai NULL menggunakan konstrain NOT NULL. Jika Anda menggunakan konstrain NOT NULL, Anda harus secara eksplisit memberikan nilai awal untuk variabel tersebut.
Menjalankan praktik pemrograman yang baik adalah dengan menginisialisasi variabel dengan benar, jika tidak, program dapat menghasilkan hasil yang tidak terduga. Cobalah contoh berikut yang menggunakan berbagai jenis variabel:
DECLARE a integer := 10; b integer := 20; c integer; f real; BEGIN c := a + b; dbms_output.put_line('Value of c: ' || c); f := 70.0/3.0; dbms_output.put_line('Value of f: ' || f); END; /
Output
Value of c: 30 Value of f: 23.333333333333333333 PL/SQL procedure successfully completed.
Variable Scope in PL/SQL
PL/SQL memungkinkan penanaman (nesting) blok-blok, artinya setiap blok program dapat berisi blok dalamnya sendiri. Jika sebuah variabel dideklarasikan dalam sebuah blok dalam (inner block), maka variabel tersebut tidak dapat diakses oleh blok luar. Namun, jika sebuah variabel dideklarasikan dan dapat diakses oleh blok luar, maka variabel tersebut juga dapat diakses oleh semua blok dalam yang terdapat di dalamnya. Terdapat dua jenis cakupan (scope) variabel:
- Variabel lokal (local variables) adalah variabel yang dideklarasikan dalam sebuah blok dalam (inner block) dan tidak dapat diakses oleh blok luar. Variabel lokal hanya terlihat dan dapat digunakan di dalam blok tempat variabel tersebut dideklarasikan.
- Variabel global (global variables) adalah variabel yang dideklarasikan dalam blok terluar (outermost block) atau dalam sebuah package. Variabel global dapat diakses oleh semua blok dalam yang ada di dalamnya, termasuk blok-blok dalam yang bersarang.
Sebagai contoh penggunaan Local dan Global variabel
DECLARE -- Global variables num1 number := 95; num2 number := 85; BEGIN dbms_output.put_line('Outer Variable num1: ' || num1); dbms_output.put_line('Outer Variable num2: ' || num2); DECLARE -- Local variables num1 number := 195; num2 number := 185; BEGIN dbms_output.put_line('Inner Variable num1: ' || num1); dbms_output.put_line('Inner Variable num2: ' || num2); END; END; /
Output
Outer Variable num1: 95 Outer Variable num2: 85 Inner Variable num1: 195 Inner Variable num2: 185 PL/SQL procedure successfully completed.
Assigning SQL Query Results to PL/SQL Variables
Anda dapat menggunakan pernyataan SELECT INTO dalam SQL untuk menugaskan nilai ke variabel PL/SQL. Untuk setiap item dalam daftar SELECT, harus ada variabel yang sesuai dan kompatibel tipe dalam daftar INTO. Contoh berikut menggambarkan konsep tersebut. Mari kita buat tabel bernama CUSTOMERS –
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
Mari kita sekarang masukkan beberapa nilai ke dalam tabel tersebut.
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Komal', 22, 'MP', 4500.00 );
Program berikut menugaskan nilai dari tabel di atas ke variabel PL/SQL menggunakan klausa SELECT INTO dalam SQL:
DECLARE c_id customers.id%type := 1; c_name customers.name%type; c_addr customers.address%type; c_sal customers.salary%type; BEGIN SELECT name, address, salary INTO c_name, c_addr, c_sal FROM customers WHERE id = c_id; dbms_output.put_line ('Customer ' ||c_name || ' from ' || c_addr || ' earns ' || c_sal); END; /
Output
Customer Ramesh from Ahmedabad earns 2000 PL/SQL procedure completed successfully
Sumber https://www.tutorialspoint.com/plsql/plsql_variable_types.htm