欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PLSQL的变量类型及举例讲解

程序员文章站 2023-11-11 13:01:34
plsql变量 plsql 的变量类型 内置的常规简单变量类型:比如说大多数表的字段类型都可以作为变量类型 用户自定义复杂变量类型:比如记录类型 保存了一个指针值 大对象类型(lob):保存了一个指...

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