首页 文章

SQLplus解码来执行脚本

提问于
浏览
2

我正在编写一个在sqlplus 11中运行的脚本 . 我有一个名为compression的用户定义变量 . 如果这是真的那么我想运行脚本CreateTablesCompression,否则运行 . 我有以下内容:

decode(compression,'true',@@CreateTablesCompression,@@CreateTables);

但是,当我运行这个时,我抛出错误:未知命令开始“解码...

我在这里遗漏了什么,我不明白为什么SQLPlus不会识别解码?

2 回答

  • 2

    Decode 不是SQL * PLUS命令,只能在pl / sql块或查询中直接在sql * plus中使用它 . 所以这里是一个如何完成条件分支的例子:我们声明一个变量 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
    
  • 4
    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
    

相关问题