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