plsql变量
plsql 的变量类型
内置的常规简单变量类型:比如说大多数表的字段类型都可以作为变量类型 用户自定义复杂变量类型:比如记录类型 保存了一个指针值 大对象类型(lob):保存了一个指向大对象的地址
plsql本身没有输入输出功能,如果要想 像命令行运行c程序那样可以接收输入值,那你必须依赖执行环境 把值传给plsql块,比如 isql plus执行环境或者plsql developer的command window 执行环境中, 有一种 substitution变量 可以用来接收输入值;而另一种host变量可以把运行时的值传出到执行环境中。
plsql的变量类型举例
布尔类型:ture 数值类型:256.120.68 bfile类型: 视频, 存储于外部文件的二进制数据,最大可到4g 日期类型:25-jan-01 blob类型: 图片,大二进制数据,最大可到4g long类型: 长文字信息,可变长打字符串,最大可到2g 字符串类型:atlanta
plsql变量声明
语法:
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; ...
#### plsql特有的%type属性来声明与xxl类型一致的变量类型
举例:
... v_name employees.last_name %type; v_min_balance v_balance%type := 10; ...
### 可绑定变量(bind variable 也称为host variable , 非plsql 变量):
可绑定变量是一种在缩主环境中定义的变量,所谓缩主环境一般指示sqlplus执行环境或者是 plsql developer 的command window执行环境;
可绑定变量可用于在运行时把值传递给plsql, 创建语法如下:
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中使用可绑定变量时,前面要加上”:”,以示区分。
#### dbms_output.put_line()介绍:
在接下来的实验中,经常需要在调试程序时输出中间变量的值,我们可使用oracle 内置的package中的函数。
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中则不需要这句话。