PL/SQL允許我們聲明常量和變量,但是常量和變量必須是在聲明後纔可以使用,向前引用(forward reference)是不允許的。
1、變量聲明
變量可以是任何SQL類型,如CHAR,DATE或NUMBER等,也可以是PL/SQL類型,BOOLEAN或BINARY_INTEGER等。聲明方法如下:
part_no NUMBER(4);
in_stock BOOLEAN;
我們還可以用TABLE VARRAY RECORD這些複合類型來聲明嵌套表、變長數組(縮寫爲varray)和記錄。
2、變量賦值
我們可以用三種方式爲變量賦值
第一種,直接使用賦值操作符":=":
tax := price * tax_rate;
valid_id := FALSE;
bonus := current_salary * 0.10;
wages := gross_pay(emp_id,
st_hrs,
ot_hrs
) - deductions;
第二種,利用數據庫中查詢的結果爲變量賦值:
SELECT sal * 0.10
INTO bonus
FROM emp
WHERE empno = emp_id;
第三種,把變量作爲一個OUT或IN OUT模式的參數傳遞給子程序,然後由子程序爲其賦值。如下例所示,IN OUT參數可以爲被調用的子程序傳遞初始值然後子程序將更新後的新值返回給調用程序:
DECLARE
my_sal REAL(7,2);
PROCEDURE adjust_salary (emp_id INT, salary IN OUT REAL) IS ...
BEGIN
SELECT AVG(sal)
INTO my_sal
FROM emp;
adjust_salary(7788, my_sal); -- assigns a new value to my_sal
? 聲明常量
聲明常量跟聲明變量類似,但是要加一個CONSTANT關鍵字,並在聲明時爲其賦上初始值。下例中,我們聲明一個名爲credit_limit的常量:
credit_limit CONSTANT REAL := 5000.00;