频道栏目
首页 > 资讯 > SQL Server > 正文

PLSQL的变量类型及举例讲解

18-07-25        来源:[db:作者]  
收藏   我要投稿

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

相关TAG标签
上一篇:MySQL中出现Accessdeniedforuser'root'@'localhost'(usingpassword:YES)问题的解决方法
下一篇:Python下的scikit-learn预测准确率计算(代码实例)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站