Oracle12C--变量的声明与赋值(二十五)
2017-05-09 09:46
281 查看
知识点的梳理:
Oracle定义变量的方式有3种:
声明并使用变量;
使用%TYPE声明变量类型;
使用%ROWTYPE声明变量类型
可以通过sys登录,使用"v$reserved_words"数据字典查看全部关键字
声明并使用变量
变量声明基本规则:
PL/SQL是强类型语言,变量都必须在它声明之后才可以使用;
变量不区分大小写;
变量都要在DECLARE部分声明;
变量名称可以由字母,数字,_(下划线),$,#组成;
所有的变量名称要求以字母开头,不能是Oracle保留字(关键字);
可以通过sys登录,使用"v$reserved_words"数据字典查看全部关键字
变量的长度最多30个字符;
所有的变量均为局部作用域,它们只在给定的PL/SQL块中有效;
变量的默认值为NULL;
示例:
变量声明语法:
定义非空变量:
定义常量:
使用%TYPE声明变量类型
该声明方式,可以使某一个变量与指定数据表中某一列的类型一样;
语法:
示例:使用"%TYPE"定义变量
使用%ROWTYPE声明变量类型
此标记可以定义表中一行记录的类型;
使用"select…..into…."将表中的一行记录设置到了ROWTYPE类型的变量中时,可以利用"rowtype变量.表字段"的方式取得表中每行的对应列数据
示例:使用ROWTYPE装载一行记录
补充:通过定义专门的集合类型也可以完成与ROWTYPE类型的功能
Oracle定义变量的方式有3种:
声明并使用变量;
使用%TYPE声明变量类型;
使用%ROWTYPE声明变量类型
可以通过sys登录,使用"v$reserved_words"数据字典查看全部关键字
声明并使用变量
变量声明基本规则:
PL/SQL是强类型语言,变量都必须在它声明之后才可以使用;
变量不区分大小写;
变量都要在DECLARE部分声明;
变量名称可以由字母,数字,_(下划线),$,#组成;
所有的变量名称要求以字母开头,不能是Oracle保留字(关键字);
可以通过sys登录,使用"v$reserved_words"数据字典查看全部关键字
变量的长度最多30个字符;
所有的变量均为局部作用域,它们只在给定的PL/SQL块中有效;
变量的默认值为NULL;
示例:
定义变量不设置默认值 | ||
|
|
|
DECLARE v_resultA NUMBER NOT NULL := 100 ; -- 定义一个非空变量v_resultA,同时赋值 BEGIN DBMS_OUTPUT.put_line('v_resultA变量内容:' || (v_resultA) ) ; END ; / | 运行结果:v_resultA变量内容:100 |
DECLARE v_resultA CONSTANT NUMBER NOT NULL := 100 ; -- 定义一个常量同时赋值 BEGIN DBMS_OUTPUT.put_line('v_resultA常量内容:' || (v_resultA) ) ; END ; / | 运行结果:v_resultA变量内容:100 1.使用constant定义的常量不能在程序中对其参数进行修改。此sql使用了NOT NULL进行定义,实际上是没有任何实际意义的。 |
该声明方式,可以使某一个变量与指定数据表中某一列的类型一样;
语法:
变量定义表名称.字段名称%TYPE |
DECLARE v_eno emp.empno%TYPE ; -- 与empno类型相同 v_ename emp.ename%TYPE ; -- 与ename类型相同 BEGIN DBMS_OUTPUT.put_line('请输入雇员编号:') ; v_eno := &empno ; -- 由键盘输入雇员编号 SELECT ename INTO v_ename FROM emp WHERE empno= v_eno ; DBMS_OUTPUT.put_line('编号为:' || v_eno || '雇员的名字为:'|| v_ename) ; END ; / | 运行:输入empno的值:7369 输出结果:编号为:7369雇员的名字为:SMITH 分析:此程序主要演示了%TYPE变量的使用方式。定义的eno和ename两个变量的数据类型参考了emp表的empno和ename两个字段 |
此标记可以定义表中一行记录的类型;
使用"select…..into…."将表中的一行记录设置到了ROWTYPE类型的变量中时,可以利用"rowtype变量.表字段"的方式取得表中每行的对应列数据
示例:使用ROWTYPE装载一行记录
DECLARE v_deptRow dept%ROWTYPE ; -- 装载一行dept记录 BEGIN SELECT * INTO v_deptRow FROM dept WHERE deptno=10 ; DBMS_OUTPUT.put_line('部门编号:'|| v_deptRow.deptno || ',名称:' || v_deptRow.dname || ',位置:' || v_deptRow.loc) ; END ; / | 运行结果:部门编号:10,名称:ACCOUNTING,位置:NEW YORK 分析:此sql定义了deptRow的ROWTYPE类型变量,之后使用限定查询,查询出10部门的完整信息,并将此行信息设置到deptRow变量中,然后分别利用列名称取得此行中的每列内容。 |
通过自定义类型接收一行记录: DECLARE TYPE dept_type IS RECORD ( dno dept.deptno%TYPE , dna dept.dname%TYPE , dlo dept.loc%TYPE) ; -- 定义一个新的类型 v_deptRow dept_type ; -- 装载一行dept记录 BEGIN SELECT * INTO v_deptRow FROM dept WHERE deptno=10 ; DBMS_OUTPUT.put_line('部门编号:'|| v_deptRow.dno || ',名称:' || v_deptRow.dna || ',位置:' || v_deptRow.dlo) ; END ; / | 此sql运行结果与上例相同。此方法较为复杂,了解即可 |
相关文章推荐
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Oracle12C--变量的声明与赋值(二十五)
- Javascript 函数声明 的优先级 高于 变量声明的优先级,但 不会 覆盖变量赋值
- JS入门~变量的声明和赋值
- Java变量声明与赋值习惯
- 变量的定义、声明、赋值和初始化的区别
- 利用try-catch判断变量是已声明未赋值还是未声明
- ES6 变量声明与赋值:值传递、浅拷贝与深拷贝