Substitution Variable

Substitution Variable是在Oracle中提供用戶輸入的界面,在用戶輸入數據以後,先替換PL/SQL腳本,再編譯執行

功能特性,案例,小結,

功能特性

在Oracle提供的相關工具中,如SQL PLUS管理平台中,允許資料庫管理員採用替換變數來提高SQL語句的靈活性。替換變數的定義跟普通變數的定義類似,只需要在變數名前面加入&符號即可。當運行一段有替換變數的SQL語句時,資料庫系統會自動提醒用戶要輸入哪些變數值。

案例

1. 案例一:輸入年齡,然後列印出來
SQL> declare
2 v_age number(3);
3 begin
4 v_age:=&年齡;
5 dbms_output.put_line('您的年齡是 = '||v_age);
6 end;
7 /
當運行時用戶輸入 年齡 的值是: 20,則
原值 4: v_age:=&年齡;
新值 4: v_age:=20;
說明:在用戶輸入“20”以後,將“&年齡”替換為了“20”。於是腳本的原始碼發生了改變:
declare
v_age number(3);
begin
v_age:=20;
dbms_output.put_line('您的年齡是 = '||v_age);
end;
所以“&”變數並不是一個真正的變數,它不能保存任何內容,只是提供一個字元串替換的功能。
2. 案例二:用戶輸入姓名並列印。
declare
v_age varchar2(3);
begin
v_age:=&姓名;
dbms_output.put_line('您的姓名是 = '||v_age);
end;
問題:如果用戶輸入“a”,程式是否能夠運行,如果能,列印的結果是什麼?
分析:當用戶輸入“a”,上面代碼就是:
declare
v_age varchar2(3);
begin
v_age:=a;
dbms_output.put_line('您的姓名是 = '||v_age);
end;
由於“a”前後沒有單引號,所以會被當作“標識符”即當作變數名。
但是a這個變數又沒有定義。所以一定會提示如下的錯誤
必須說明標識符 'A'
解決的方法就是:在“&”前後加上單引號,即:
declare
v_age varchar2(3);
begin
v_age:='&姓名';
dbms_output.put_line('您的姓名是 = '||v_age);
end;
/

小結

·替代變數的作用主要是為匿名塊提供一個數據錄入的界面。
·替代變數只是完成字元串替換的功能,不能保存值。
·如果替代變數是字元串,則必須加上單引號。
說明:如果是命名塊,則通過名稱和參數進行調用,此時不會再用替代變數

相關詞條

熱門詞條

聯絡我們