JUST DO IT ~

我只想当个程序员

plsql 环境 定义一个 环境变量 define var=x var 定义变量




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

posted on 2008-08-01 14:47 小高 阅读(2715) 评论(0)  编辑  收藏 所属分类: Oracle


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(3)

随笔分类(352)

收藏夹(19)

关注的blog

手册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜