PLSQL本身没有输入输出功能,如果要想 像命令行运行C程序那样可以接收输入值,那你必须依赖执行环境 把值传给PLSQL块,比如 iSQL Plus执行环境或者PLSQL Developer的Command Window 执行环境中, 有一种 substitution变量 可以用来接收输入值;而另一种Host变量可以把运行时的值传出到执行环境中。
语法:
identifier [constant] datatype [not null]
[:= | default expr];
举例:
declare
v_hiredate date;
v_deptno number(2) not null := 10;
v_location varchar2(13) := 'Atlanta';
c_comm constant number := 1400;
说明:
1. 变量命名建议遵循通用规则,比如v_name 表示一个变量,c_name表示一个常量
2. 一般建议每一行声明一个变量,这样程序的可读性比较好;
3. 如果声明了变量,但未进行初始化,则 在没有赋值之前该变量的值为NULL ; 一个好的编程习惯是对所有声明 的变量进行初始化赋值。
4. 在同一个块中,避免命名与数据库表中的字段名相同的变量
DECLARE employee_id NUMBER(6);
BEGIN
SELECT employee_id
INTO employee_id
FROM employees
WHERE last_name = 'Kochhar';
END;
* 这是一个反面教材,合理的命名方法是给变量起名为: v_employee_id
declare
v_job VARCHAR2(9);
v_count BINARY_INTEGER := 0;
v_total_sal NUMBER(9,2) := 0;
v_orderdate DATE := SYSDATE + 7;
c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
v_valid BOOLEAN NOT NULL := TRUE;
...
...
v_name employees.last_name %TYPE;
v_min_balance v_balance%TYPE := 10;
...
variable return_code number
variable return_msg varchar2(30)
例如:
VARIABLE g_salary NUMBER
BEGIN SELECT salary
INTO :g_salary
FROM employees
WHERE employee_id = 178;
END;
/ PRINT g_salary
注意:在标准的PLSQL中定义变量是不能用variable关键字的,此关键字只在SQLPlus执行环境中有效,可使用print语句输出变量内容
在PLSQL中使用可绑定变量时,前面要加上”:”,以示区分。
declare
v_sal number(9,2) := &p_annual_sal;
begin
v_sal := v_sal/12;
DBMS_OUTPUT.PUT_LINE('The monthly salary is ' || to_char(v_sal));
end;
上述例子中,我们使用DBMS_OUTPUT.PUT_LINE () 输出变量v_sal的值;
解释: &p_annual_sal 在Plsql Developer的SQL window 执行环境中,可用于提示用户输入一个具体的值。
注意:在SQLPLUS中执行 DBMS_OUTPUT.PUT_LINE () 前,必须先执行: SET SERVEROUTPUT ON ,而在PLSQL Developer的SQL Window中则不需要这句话。