设为首页 加入收藏

TOP

Oracle变量定义的三种方式(define,variable,declare)学习笔记(一)
2015-11-21 01:56:56 来源: 作者: 【 】 浏览:0
Tags:Oracle 变量 定义 方式 define variable declare 学习 笔记

1、define(即host变量)

Host变量主要作用是起到一个替代变量的作用,是主机环境可以和oracle进行交互的一个媒介。 通过define定义host变量的时候必须指定变量名和变量的值,如果变量名已经存在于host变量中,则自动覆盖,这个值不可以指定类型,一律按char存储。 DEFINE 变量只在当前session环境中有效。

(1).语法:

define variable_name = value

(2).声明和初始化DEFINE变量

//声明define变量的时候必须同时初始化赋值变量 SQL> define num=1; 

另外可以使用define命令显示单个(define variable_name,不能显示多个)或全部(define)的host变量的值和类型(类型都是char)。


(3).显示指定的DEFINE变量值和类型

//使用define def_name命令显示指定DEFINE变量的值和类型(DEFINE变量类型都为char) SQL> define num; DEFINE num = "1" (CHAR)

(4).显示所有的DEFINE变量值和类型

//使用define显示所有DEFINE变量的值和类型(DEFINE变量类型都为char) SQL> define DEFINE _CONNECT_IDENTIFIER = "TOPPROD" (CHAR) DEFINE _SQLPLUS_RELEASE = "902000100" (CHAR) DEFINE _EDITOR = "Notepad" (CHAR) DEFINE _O_VERSION = "Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Producti With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR) DEFINE _O_RELEASE = "1102000300" (CHAR)

了解对于host变量启用和关闭的命令是:set define on和set define off。


(5).关闭DEFINE变量定义功能

//关闭define SQL> set define off; SQL> define num=1; SQL> select * from occ_file where rownum=# select * from occ_file where rownum=&num ORA-01008: 并非所有变量都已绑定

(6).开启DEFINE变量定义功能

//打开define SQL> set define on; SQL> define num=1; SQL> select * from occ_file where rownum=# OCC01 OCC02 ---------- --------------- 020040 松荣五金-SRWJ 

(7).引用DEFINE变量

这在sqlplus和plsql developer的command window中都可以使用,在sql或plsql中引用host变量,使用&符号,相当于一个简单的替换动作,比如

//错误案例 SQL> define x=occ_file; SQL> select * from '&x' where rownum=1; select * from 'occ_file' where rownum=1 ORA-00903: 表名无效 SQL>

报错是因为x被替换为occ_file,语句变为select * from ’occ_file’,’occ_file’表是不存在的,多了个单引号。

//正确案例 SQL> define x=occ_file; SQL> select * from &x where rownum=1; OCC01 OCC02 ---------- --------------- 020040 松荣五金-SRWJ SQL>

(8).引用临时DEFINE变量

可以不预先声明初始化define变量,直接在sql或plsql中在字符串前面加&符号,会提示你输入变量的值,然后替换。这种情况下是临时的变量,define命令查不到

//不预先声明和初始化define变量直接使用&引用 SQL> select * from &y where rownum=1; //弹框提示输入变量y的值,输入occ_file,后打印出一下信息 OCC01 OCC02 ---------- --------------- 020040 松荣五金-SRWJ SQL>

经常使用host变量的场合是在写脚本的时候,脚本的有些地方经常变化,其他地方固定,那么可以使用&引用。



2、Variable(即邦定变量)

绑定变量主要是在sql中使用,达到sql解析一次,执行多次,从而提高效率的目的。绑定变量和host变量一样,也有定义的,也有临时性的。(临时性的在动态sql或动态plsql中通过占位符和using使用),其他的如sql会自动使用绑定变量的情况,此处不专门讨论。定义的绑定变量也是在当前session中有效。 绑定变量以下特点:

绑定变量在sql和plsql中直接引用必须加前缀 :。如要引用绑定变量a,则是 :a;

在真正运行的PLSQL程序中,比如自动运行,有自己的一套机制;

初始化和应用绑定变量,初始化定义的绑定变量,可以使用过程和函数,其中过程可以内部给绑定变量赋值、也可以参数是绑定变量,参数模式为out返回。使用函数和过程差不多,还可以使用call
函数来赋值。

sqlplus中可以使用大于等于3个字符表示一个命令,这里我们用var,var命令是声明一个绑定变量,只能给予名称和类型,定义的时候不能赋值,赋值可以在plsql中或者采用函数赋值(而host变量定义的时候必须赋值)。

(1).语法:

var var_name type 

(2).声明绑定变量

//使用var声明两number类型的变量num1、num2 SQL> var num1 number; SQL> var num2 number;

(3).显示指定绑定变量

//var num1命令显示指定绑定变量名称、数据类型 SQL> var num1 variable num1 datatype NUMBER SQL> 

(4).显示所有绑定变量

//var命令显示所有绑定变量的变量名称、数据类型 SQL> var variable num1 datatype NUMBER variable num2 datatype NUMBER

(5).使用PL/SQL初始化绑定变量

//给绑定变量赋值 SQL> begin :num1:=1; :num2:=2; end; / PL/SQL procedure successfully completed num1 --------- 1 num2 --------- 2 SQL>

(6).使用EXECUTE初始化绑定变量

//使用execute初始化,初始化多个用分号隔开 SQL> exec :num1:=1;:num2:=2 PL/SQL procedure successfully completed num1 --------- 1 num2 --------- 2 SQL> 

(7).显示指定的绑定变量的值

//使用print var_name命令输出指定的绑定变量值 SQL> print num1;
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oraclebetweenand边界问题 下一篇OracleRAC安装过程中碰到的“坑”..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: