替換變量(僅用于SQL *Plus或者用于原理和SQL *Plus相同的開發(fā)工具):
臨時存儲值
利用它可以達到創(chuàng)建通用腳本的目的
利用它可以達到和用戶交互,故在SQL *Plus中又稱交互式命令
替換變量的格式式在變量名稱前加一個&,以便在運行SQL命令時提示用戶輸入替換數(shù)據(jù),然后按輸入數(shù)據(jù)運行SQL命令
語法:
(1)& :“&變量名”eg:&name;
生命周期:單次引用中,不需要聲明,如果替換字符或日期類型,最好用單引號擴起
使用范圍:where、order by、列表達式、表名、整個SELECT 語句中
(2)&& :“&&變量名”eg:&&name;
生命周期:整個會話(session連接),不需要聲明
(3)define :“define 變量名=變量值”eg:DEFINE a = clark;
生命周期:整個會話,預(yù)先聲明,使用時用&引用聲明的變量
define variable=用戶創(chuàng)建的CHAR類型的值:define 變量名=值;
define 變量名:查看變量命令。
undefine 變量名:清除變量
define:查看在當(dāng)前會話中所有的替換變量和它們的值
(4)accept
生命周期:整個會話
預(yù)先聲明,可以客戶化提示信息,使用時用&引用聲明的變量。
定義:
accept 變量名name number/char/date prompt '提示信息內(nèi)容'即:ACC[EPT] variable [NUM[BER] | CHAR | DATE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]
解釋:
PROMPT命令:用于輸出提示用戶的信息,以便使用戶了解腳本文件的功能和運行情況
PAUSE命令:用于暫停腳本文件的運行
HIDE選項:用于隱藏用戶的輸入,使別人不可見,安全
這條命令的意思是:當(dāng)plsql程序段執(zhí)行到變量name的時候,此時需要用戶的交互才能繼續(xù)執(zhí)行下去,plsql程序段會顯示“提示信息內(nèi)容”讓用戶輸入相關(guān)信息(如果指定hide選項,那么在接下去用戶輸入的東西將被用星號顯示出來增加安全,有點像輸入密碼),用戶輸入的內(nèi)容被接收到并且把它付給name,關(guān)于在“提示信息內(nèi)容”下用戶輸入的內(nèi)容的類型,plsql程序段開發(fā)人員來通過number/char/date指定,變量name得到正確的值以后,繼續(xù)執(zhí)行相關(guān)下面的程序!
例:accept a char prompt '請輸入員工的雇傭時間(yyyy-mm-dd):' hide
例:accept a char prompt 'input a:' hide
verify:是否給出原值及新值提示。
set verify on/off;
具體請參看下面的例子:
plsql程序1:
- declare
- v_sal number(6,2);
- v_ename emp.ename%type:='&ename';
- begin
- select sal into v_sal from emp
- where lower(ename)=lower(v_ename);
- if v_sal<2000 then
- update emp set sal=v_sal + 200
- where lower(ename)=lower(v_ename);
- end if;
- end;
-
- /
plsql程序2:
- declare
- v_sal number(6,2);
- v_ename emp.ename%type:='&&ename';
- begin
- select sal into v_sal from emp
- where lower(ename)=lower(v_ename);
- if v_sal<2000 then
- update emp set sal=v_sal + 200
- where lower(ename)=lower(v_ename);
- end if;
- end;
-
- /
secureCRT的一個會話中先執(zhí)行程序2,再次執(zhí)行程序1,會發(fā)現(xiàn)直接PL/SQL procedure successfully completed.
而不讓我輸入ename,將set verify off也不行
另一個打開會話 將set verify off后,每次執(zhí)行程序1都會讓你輸入ename。
這就是在前面一個會話執(zhí)行程序2的時候已經(jīng)將ename,保存為了會話的變量,而不是plsql程序的變量。 本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|