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 環(huán)境 定義一個 環(huán)境變量 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類型的替換變量,執(zhí)行時有提示
variable可定義多種類型的變量,執(zhí)行時無提示
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 行出現(xiàn)錯誤:
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 行出現(xiàn)錯誤:
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 行出現(xiàn)錯誤:
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 行出現(xiàn)錯誤:
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 行出現(xiàn)錯誤:
ORA-00904: "VS_STR": 標識符無效
SQL> select vs_str from dual;
select vs_str from dual
*
第 1 行出現(xiàn)錯誤:
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 行出現(xiàn)錯誤:
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環(huán)境“&”字符'的用法
在SQL*PLUS默認環(huán)境里會把'&字符'當成變量來處理.
有些時候我們也需要在SQL>的符號下輸入'&字符', 只需要改變SQL*PLUS下一個環(huán)境變量define即可.
SQL> set define off;
是把默認的&綁定變量的功能取消, 可以把'&字符'當成普通字符處理
SQL> set define on;
打開&綁定變量的功能, &后面的字符串當變量使用.
SQL> show define;
查看當前SQL*PLUS的define狀態(tài)
舉例說明:
---------------------------------------------------------------
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