我正在寫一個腳本在sqlplus 11中運行。我有一個用戶定義的變量叫做壓縮。如果這是真的,那麼我想運行腳本CreateTablesCompression,否則運行。我有以下幾點:SQLplus解碼執行腳本
decode(compression,'true',@@CreateTablesCompression,@@CreateTables);
然而,當我運行此我拋出的錯誤:未知的命令開頭「解碼...
我失去了一些東西在這裏,我不明白爲什麼的SQLPlus止跌't認識解碼嗎?
我正在寫一個腳本在sqlplus 11中運行。我有一個用戶定義的變量叫做壓縮。如果這是真的,那麼我想運行腳本CreateTablesCompression,否則運行。我有以下幾點:SQLplus解碼執行腳本
decode(compression,'true',@@CreateTablesCompression,@@CreateTables);
然而,當我運行此我拋出的錯誤:未知的命令開頭「解碼...
我失去了一些東西在這裏,我不明白爲什麼的SQLPlus止跌't認識解碼嗎?
Decode
不是SQL * PLUS命令,你不能直接在sql * plus中直接在pl/sql塊或查詢中使用它,所以這裏是一個例子,說明條件分支可以是完成: 我們聲明一個變量flag
,它將管理要運行的兩個可用腳本中的哪一個。
SQL> variable flag varchar2(7);
SQL> exec :flag := 'true';
PL/SQL procedure successfully completed.
SQL> column our_script new_value script noprint;
SQL> select decode(:flag, 'true',
2 'c:\sqlplus\script1.sql',
3 'c:\sqlplus\script2.sql'
4 ) our_script
5 from dual;
SQL> @&script;
SCRIPT
--------
script_1
SQL> host cat foo.sql
set scan on
define compression=&1
col scr new_value script
set term off
select decode('&compression', 'true', 'CreateTablesCompression', 'CreateTables') scr from dual;
set term on
@@&script
SQL> @foo true
run CreateTablesCompression.sql
SQL> @foo false
run CreateTables.sql
很好的答案,我覺得我必須接受對方的回答,因爲它爲其他人提供的解釋,以及 – Fraser