PLSQL的变量类型及举例讲解

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中则不需要这句话。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐