【问题标题】:How to use variable in a Oracle scheduled job?如何在 Oracle 计划作业中使用变量?
【发布时间】:2021-02-19 23:15:38
【问题描述】:

以下脚本在 Oracle SQL developer 中运行。它将两行插入到一个表中。但是,当我将此脚本放入 Oracle SQL 开发人员的调度程序选项卡下的作业时,没有插入任何行。创建作业时,我使用了 sys.Default_job_class,作业类型是 PL/SQL 块。 有人可以帮我修改脚本,以便可以在工作中运行吗?谢谢

define batchNo='123';
insert into TABLE_NAME (col1, col2, col3, col4) select col1, col2, col3, col4 from TABLE2 WHERE BATCH_NO = '&batchNo';
commit;

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    更改您的代码,使其成为 PL/SQL 块:

    DECLARE
      batchNo  VARCHAR2(3) := '123';
    BEGIN
      insert into TABLE_NAME (col1, col2, col3, col4)
        select col1, col2, col3, col4
          from TABLE2
          WHERE BATCH_NO = batchNo;
      commit;
    END;
    

    define&varname 在 SQL*Plus 中使用,但不是有效的 PL/SQL。

    【讨论】:

      【解决方案2】:

      带有“&batchNo”的语法是特定于 SQL*Plus 的。它不适用于 PL/SQL。

      PL/SQL 需要这样的东西:

      DECLARE
          l_batchno number := 123;
      BEGIN
          insert into TABLE_NAME (col1, col2, col3, col4) 
              select col1, col2, col3, col4 from TABLE2 WHERE BATCH_NO = l_batchno;
          commit;
      END;
      

      【讨论】:

        【解决方案3】:

        如果你想用参数执行,你必须这样做:

        sqlplus -s $USER/$PASSWD @ script.sql <YOUR_PARAMETER>
        

        您的 SQL 脚本必须包含:

        INSERT INTO TABLE_NAME (col1, col2, col3, col4) 
        SELECT col1, col2, col3, col4 FROM TABLE2 WHERE BATCH_NO = '&1';
        COMMIT;
        

        如果你想使用超过 1 个参数...

        sqlplus -s $USER/$PASSWD @ script.sql <PARAMETER_1> <PARAMETER_2> ... <PARAMETER_N>
        

        必须放入script.sql

        DECLARE
            v_FIRST DATATYPE;
            v_SECOND DATATYPE;
            v_N DATATYPE;
        BEGIN
            v_FIRST := '&1';
            v_SECOND := '&2';
            v_N := '&N';
        END;
        

        【讨论】:

        • 感谢您提供使用参数的信息
        猜你喜欢
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 2010-11-05
        • 2018-02-21
        • 2012-11-18
        • 1970-01-01
        • 2021-01-08
        • 2022-01-07
        相关资源
        最近更新 更多