<b>替換變量</b>
SQL*Plus中的替換變量又叫替代變量,它一般用來臨時存儲相關資料;在SQL語句之間傳遞值。一般使用&或&&字首來指定替換變量. 關于使用替換變量,一般是利用其建立通用的腳本或達到和使用者交換目的。如下所示:
例如,我需要檢視表的相關資訊,如果不使用替換變量,每次查詢我都要修改腳本。非常不便,如果使用替換變量,我們可以将下面腳本存放在tab.sql腳本中,每次運作時,隻需要輸入替換變量的值就可以了。
<a href="http://images.cnitblog.com/blog/73542/201409/112136349027188.png"></a>
如果替換變量為數字類型,那麼可以直接是&+變量名稱,如下所示&DEPTNO,
如果是字元串類型或日期類型,最好使用單引号将其包裹起來,否則在輸入變量值時則必須加上單引号,不那樣做就會報錯,如下所示。
關于替換變量中&與&&的差別,兩者差別在于作用範圍不一樣,&引用的替換變量隻在目前SQL有效,而&&引用的替換變量則在目前會話有效。下面以人們經常引用的例子來說明
小知識1:在存儲過程或包體裡面,經常有在字元串中使用&的情況,執行腳本時,經常會将這些字元串視為替換變量,要求輸入值,這樣煩不甚煩,其實隻需要設定一下SQL*PLUS的環境變量即可避免這種情況。通常通過SET DEFINE OFF
小知識2:如果要顯示SQL*Plus使用替換值替換後的腳本檔案,可以使用SET VERIFY ON/OFF 指令
<b></b>
<b>使用者定義變量</b>
使用DEFINE定義了的變量(或許我們可以叫其定義常量,和C/C++中的DEFINE非常類似),可以使用&引用聲明的變量。其作用範圍或生命周期通常是整個會話。如果定義了變量後,需要清除變量,則可以使用UNDEFINE清除變量,使用DEFINE VARIABLE來檢視變量
小知識點:檢視目前會話下,SQL*Plus下定義的變量
SQL> define
DEFINE _DATE = "11-SEP-14" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "epps" (CHAR)
DEFINE _USER = "SYS" (CHAR)
DEFINE _PRIVILEGE = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1002000400" (CHAR)
DEFINE _EDITOR = "ed" (CHAR)
DEFINE _O_VERSION = "Oracle Database 10g Release 10.2.0.4.0 - Production" (CHAR)
DEFINE _O_RELEASE = "1002000400" (CHAR)
VARIABLE變量和DEFINE變量不同的是其需要指定變量類型,類似程式設計語言中的強類型和弱類型變量。前者用于綁定變量,後者是用于&或&&進行變量替換
SQL> VAR NUM NUMBER;
SQL> EXEC :NUM :=10;
PL/SQL procedure successfully completed.
SQL> PRINT NUM;
NUM
----------
10
<a href="http://images.cnitblog.com/blog/73542/201409/112136364498916.png"></a>
DECLARE定義變量則一般用于PL/SQL中。一般大家也用得比較多。在此不做說明。
<b>參考資料:</b>
<a href="http://www.doc88.com/p-783671200732.html">http://www.doc88.com/p-783671200732.html</a>
<a href="http://blog.itpub.net/9933980/viewspace-627702/">http://blog.itpub.net/9933980/viewspace-627702/</a>
<a href="http://blog.csdn.net/haiross/article/details/15340489">http://blog.csdn.net/haiross/article/details/15340489</a>