我這篇的最後一張圖,去官網往下拉一點就會看到
首先要啟用互動變數的功能,其實預設已經啟用,但我不確定每個版本都預設啟用
官網有說明,我的這篇PL/SQL也有講到一些,如果不懂PL/SQL就看截圖就好,這篇就不截圖了
只要打&xxx,xxx自己隨便取,放在SQL的任何地方都可以,反正就是個字串,一執行就會跳出畫面,這時你打什麼就是什麼,但如果沒啟用就會出「ORA-01008: 部分變數未被連結」的錯誤
※啟用/停用 換符號
SET DEFINE ON/OFF; SELECT * FROM emp where deptno = &p1; SET DEFINE &c;
※第一行就是啟用/停用,第二行就可以用了,預設要用「&」
※如果不想用預設的「&」,那就打最後一行,一打會跳出視窗,你輸入什麼就用什麼
※官網的DEF[INE]表示打DEF和DEFINE都可以,「[]」不是必要的,下面介紹的語法還有很多都是這樣
※&、&&
SELECT * FROM emp where deptno = &p1; SELECT * FROM emp where deptno = &&p1;
※第一行每次執行都要打一次
※第二行打一次就可以執行很多次,如果要清除下面會介紹
※第二行的變數名稱和第一行一樣,所以執行過第二行,第一行的變數值也有值了,就不會再跳出畫面了
※清除
SELECT &p, sum(sal) FROM emp GROUP BY &p; SELECT &&p, sum(sal) FROM emp GROUP BY &p;
※第一行兩個變數一樣,但要打兩次,所以改成第二行的寫法
※第二行的&&要寫在前面,後面的變數才知道不用再打了
※變數存起來只是暫時的,重登入就消失了,或者執行以下的語法
UNDEFINE p; UNDEFINE p p1;
※第一行清除一個變數的值
※第二行是要清除多個變數,中間用空格隔開
※DEFINE
DEFINE xxx = 20; SELECT * FROM emp WHERE deptno = &xxx;
※除了用「&」,也可以用DEFINE,看官網介紹
※ACCEPT
前本介紹的互動還不夠好,ACCEPT可以有文字,看官網介紹語法如下:
ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]
--1 ACCEPT yyy DATE FOR 'YYYY-MM-DD' NOPROMPT SELECT * FROM emp WHERE hiredate < to_date('&yyy', 'YYYY-MM-DD'); --2 ACCEPT xxx DEFAULT 30 PROMPT '請輸入部門編號:' SELECT * FROM emp WHERE deptno = &xxx; --3 ACCEPT ooo FORMAT A2 PROMPT '請輸入部門編號:' HIDE SELECT * FROM emp WHERE deptno = &ooo;
※第一組的NOPROMPT(NOPROMPT不寫也是一樣)和上面介紹的一樣,沒有文字訊息
但這一組有設定日期的格式
※第二組有預設值,但跳出的視窗有確定和取消,要按確定才有用
※第三組後本有個HIDE,表示打出來的字變成「*」號
沒有留言:
張貼留言