oracle-变量声明的三种方式

在sqlplus 环境中,声明变量的关键字:define variable declare

一、define关键字(host变量)

host变量的作用是一个替换作用,是主机环境与oracle进行交互的变量,定义host变量时必须同时指定变量名和变量的值,定义变量不可以指定数据类型,define定义的变量默认其数据类型都是char。该变量只在当前session起作用

1、定义语法:

define var_name =value

2、define命令

>查看已定义的所有变量及其值:define

SQL> define
DEFINE _DATE           = "10-3月 -00" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcl" (CHAR)
DEFINE _USER           = "user" (CHAR)
DEFINE _PRIVILEGE      = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR)
DEFINE _EDITOR         = "Notepad" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
DEFINE _O_RELEASE      = "1102000100" (CHAR)

>查看已定义的某一个变量

SQL> define num
DEFINE NUM             = "3" (CHAR)

 

3、变量的引用

定义变量后,可在sql语句中直接使用,需要在变量前加“&”符号

 

 

4、关闭打开define变量定义。

SQL> set define on
SQL> define b=10
SQL> select * from user_tables where rownum=&b;
原值    1: select * from user_tables where rownum=&b
新值    1: select * from user_tables where rownum=10

SQL> set define off;
SQL> define a=10
SQL> select * from user_tables where rownum=&a;
SP2-0552: 未声明绑定变量 "A"。

5、临时变量

上述是显示的定义变量方式,另一种是隐式定义的临时变量,临时变量只是当前sql语句可用。

SQL> select * from user_tables where rownum=&var;
输入 var 的值:  10
原值    1: select * from user_tables where rownum=&var
新值    1: select * from user_tables where rownum=10

SQL>  select * from user_tables where rownum=&var;
输入 var 的值:

二、variable关键字

variable定义的变量即绑定变量,一般用于存储过程有out类型的参数时。定义时需要定于变量的数据数据类型,支持的数据类型如下。同define一样,只在当前会话中有效。

SQL> help variable

 VARIABLE
 --------

 Declares a bind variable that can be referenced in PL/SQL, or
 lists the current display characteristics for a single variable
 or all variables.

VAR[IABLE] [variable [type]]

 where type represents one of the following:

     NUMBER         CHAR          CHAR (n [CHAR|BYTE])
     NCHAR          NCHAR (n)     VARCHAR2 (n [CHAR|BYTE])
     NVARCHAR2 (n)  CLOB          NCLOB
     REFCURSOR      BINARY_FLOAT  BINARY_DOUBLE

1、定于语法:

 

var[iable] var_name type;
简写var,(sqlplus支持不少于三个字符的表示命令)。var定于的变量,必须同时指定数据类型,定义时var变量不能赋值。

 

2、引用

引用var定义变量,需要在前面加“:”。

3、var命令,同define。

4、var变量的初始化。

使用存储过程初始化、函数初始化。

call命令调用函数把结果传给绑定变量,

函数初始化:call function(参数列表) into :绑定变量1

存储过程初始化:exec pro_name(var_name=>:绑定变量);

三、declare--声明部分

plsql程序块的声明部分,内部变量,只在当前程序块有效。常量、变量、游标的声明都在declare部分。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Oracle)