system@idmp-192.168.2.101>
var cc number;
system@idmp-192.168.2.101>
begin :cc:=9901; end;
2 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.06
system@idmp-192.168.2.101>
var
变量 cc
数据类型 NUMBER
system@idmp-192.168.2.101>
show cc
SP2-0158: 未知的 SHOW 选项 "cc"
system@idmp-192.168.2.101>
print cc
CC
----------
9901
system@idmp-192.168.2.101>
plsql 环境 定义一个 环境变量 define var=x
或者在脚本中用 &var sqlplus 会提示 输入变量值.
SQL> set define off;
是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理
SQL> set define on;
打开&绑定变量的功能, &后面的字符串当变量使用.
SQL> show define;
有点宏替代的味道
SQL> select to_char('&at') from dual ;
输入 at 的值: iuo223
原值 1: select to_char('&at') from dual
新值 1: select to_char('iuo223') from dual
TO_CHA
------
iuo223
SQL>
SQL> select &y from dual ;
输入 y 的值: 1
原值 1: select &y from dual
新值 1: select 1 from dual
1
----------
1
SQL>
请输入用户名: idmp/idmp
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from dual where 1 = &item
2 ;
输入 item 的值: 2
原值 1: select * from dual where 1 = &item
新值 1: select * from dual where 1 = 2
未选定行
Var 变量 类型
define用于char类型的替换变量,执行时有提示
variable可定义多种类型的变量,执行时无提示
variable定义的变量是绑定变量
SQL>
var id
变量 id
数据类型 NUMBER
SQL> begin
2 :id:=0;
3 end;
4 /
PL/SQL 过程已成功完成。
SQL>
print id
ID
----------
0
SQL> select
:id from dual;
:ID
----------
0
SQL> Select Created, Log_Mode, Log_Mode From V$Database;
CREATED LOG_MODE LOG_MODE
-------------- ------------ ------------
20-1月 -08 NOARCHIVELOG NOARCHIVELOG
SQL>
SQL> define a ="abc";
SQL> select &a from dual ;
原值 1: select &a from dual
新值 1: select abc from dual
select abc from dual
*
第 1 行出现错误:
ORA-00904: "ABC": 标识符无效
SQL> select &a as a from dual ;
原值 1: select &a as a from dual
新值 1: select abc as a from dual
select abc as a from dual
*
第 1 行出现错误:
ORA-00904: "ABC": 标识符无效
SQL> select to_char(&a) from dual ;
原值 1: select to_char(&a) from dual
新值 1: select to_char(abc) from dual
select to_char(abc) from dual
*
第 1 行出现错误:
ORA-00904: "ABC": 标识符无效
SQL> define ab ="1";
SQL> select to_char(&a) from dual ;
原值 1: select to_char(&a) from dual
新值 1: select to_char(abc) from dual
select to_char(abc) from dual
*
第 1 行出现错误:
ORA-00904: "ABC": 标识符无效
SQL>
原值 1: select to_char(&ab) from dual
新值 1: select to_char(1) from dual
T
-
1
SQL> define vs_str=a;
SQL> select vs_str from dual;
select vs_str from dual
*
第 1 行出现错误:
ORA-00904: "VS_STR": 标识符无效
SQL> select vs_str from dual;
select vs_str from dual
*
第 1 行出现错误:
ORA-00904: "VS_STR": 标识符无效
SQL> set VS_STR= null ;
SP2-0158: 未知的 SET 选项 "VS_STR="
SQL> set VS_STR=null ;
SP2-0735: 未知的 SET 选项开头 "VS_STR=nul..."
SQL> set VS_STR=null
SP2-0735: 未知的 SET 选项开头 "VS_STR=nul..."
SQL> set VS_STR= null
SP2-0158: 未知的 SET 选项 "VS_STR="
SQL> define VS_STR= null
SQL> select nvl(VS_STR,1) from dual ;
select nvl(VS_STR,1) from dual
*
第 1 行出现错误:
ORA-00904: "VS_STR": 标识符无效
SQL> select nvl(&VS_STR,1) from dual ;
原值 1: select nvl(&VS_STR,1) from dual
新值 1: select nvl(null,1) from dual
NVL(NULL,1)
-----------
1
SQL> define VS_STR= 2
SQL> select nvl(&VS_STR,1) from dual ;
原值 1: select nvl(&VS_STR,1) from dual
新值 1: select nvl(2,1) from dual
NVL(2,1)
----------
2
SQL*PLUS环境“&”字符'的用法
在SQL*PLUS默认环境里会把'&字符'当成变量来处理.
有些时候我们也需要在SQL>的符号下输入'&字符', 只需要改变SQL*PLUS下一个环境变量define即可.
SQL> set define off;
是把默认的&绑定变量的功能取消, 可以把'&字符'当成普通字符处理
SQL> set define on;
打开&绑定变量的功能, &后面的字符串当变量使用.
SQL> show define;
查看当前SQL*PLUS的define状态
举例说明:
---------------------------------------------------------------
SQL> CREATE TABLE TEST3 (
ID NUMBER (2) PRIMARY KEY,
NAME VARCHAR2 (20));
SQL> show define;
define "&" (hex 26)
SQL> insert into test3 values(1,'sgs&a&n');
Enter value for a: abc
Enter value for n: 456
old 1: insert into test3 values(1,'sgs&a&n')
new 1: insert into test3 values(1,'sgsabc456')
1 row created.
SQL> set define off;
SQL> insert into test3 values(2,'sgs&a&n');
1 row created.
SQL> select * from test3;
ID NAME
-- --------------------
1
sgsabc456
2
sgs&a&n