在PL/SQL編程中,變量賦值是一個值得注意的地方,它的語法如下:
* 變量賦值
variable := expression ;
* 聲明同時為變量賦值
variable variable_Type:= expression ;
DECLARE
emp_id emp.empno%TYPE :=7788;
emp_name emp.ename%TYPE;
wages emp.sal%TYPE;
BEGIN
SELECT ename, NVL(sal,0) + NVL(comm,0) INTO emp_name, wages
FROM emp WHERE empno = emp_id;
DBMS_OUTPUT.PUT_LINE(emp_name||'----'||to_char(wages));
END;
提示:不能將SELECT語句中的列賦值給布爾變量。
1. CHAR 轉換為 NUMBER: TO_NUMBER('100.0')
2.NUMBER 轉換為CHAR: TO_CHAR('123.45')
3. 字符轉換為日期: v_date := TO_DATE('2001.07.03','yyyy.mm.dd');
4.日期轉換為字符 v_to_day := TO_CHAR(SYSDATE, 'yyyy.mm.dd hh24:mi:ss') ;
-- Created on 2015/6/12 by LYH
declare
str char(10):='100.0';
i int:=421;
total int;
begin
total:=TO_NUMBER(str)+i;
Dbms_Output.put_line(TO_CHAR(total));
end;
在PL/SQL編程中,如果在變量的定義上沒有做到統一的話,可能會隱藏一些危險的錯誤,這樣的原因主要是變量的作用范圍所致。變量的作用域是指變量的有效作用范圍,與其它高級語言類似,PL/SQL的變量作用范圍特點是:
變量的作用范圍是在你所引用的程序單元(塊、子程序、包)內。即從聲明變量開始到該塊的結束。 一個變量(標識)只能在你所引用的塊內是可見的。 當一個變量超出了作用范圍,PL/SQL引擎就釋放用來存放該變量的空間(因為它可能不用了)。一個例子
-- Created on 2015/6/15 by LYH
declare
Emess char(4):='李四';
begin
declare
v1 number(10);
begin
SELECT fage
INTO v1
from t_employee
where fname='Tom';
Dbms_Output.put_line(v1);
end;
declare
v1 number(10);
begin
SELECT fage
INTO v1
from t_employee
where fname='Jerry';
Dbms_Output.put_line(v1);
end;
end;