我正在写一个脚本在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