条件PL SQL过程不起作用

时间:2017-05-11 13:59:45

标签: sql oracle plsql

我正在编写一个简单的PL SQL过程。但是它抛出了我忽略错误的语句。我是否需要将它们称为单个变量然后插入到最终表中?请检查以下代码。

  PROCEDURE EMP_MAIN IS BEGIN

FOR CUR1 IN
      (SELECT STG.INT1 INT1
    , STG.OPT1 OPT1
    , STG.FDT1 DT1
        , STG.HDR_SRC_LEAD_ID HDR_LEAD_ID
    , STG.HDR_SRC_NAME HDR_SRC_NAME
    FROM MAIN_EMP STG)

  BEGIN  IF (INT1 IS NOT NULL)
    THEN 
    INSERT INTO EMP_FIN(
                                          ROW_ID
                                        , INT
                                        , OPTION
                                        , DATE
                                        , TYPE                                      
                                        , RATING
                                    )
                 VALUES
                                    (
                                       ROWNUM
                                     , CUR1.INT1
                                     , CUR1.OPT1
                                     , CUR1.DT1
                                     , 'Prospect'
                                     , '1'
                 );
            COMMIT;
            END IF; END EMP_MAIN;

如果我错过了什么,请告诉我。

1 个答案:

答案 0 :(得分:0)

此代码完全解决了这个问题,并使用Oracle [基于集合的处理引擎]来实现一次一行/一次缓慢的过程。 我建议改为:

INSERT INTO EMP_FIN (ROW_ID, INT, OPTION
                                        , DATE
                                        , TYPE
                                        , RATING
                                    )
SELECT rownum, STG.INT1 INT1
    , STG.OPT1 OPT1
    , STG.FDT1 DT1
    , STG.HDR_SRC_LEAD_ID HDR_LEAD_ID
    , STG.HDR_SRC_NAME HDR_SRC_NAME
    FROM MAIN_EMP STG
    WHERE INT1 IS NOT NULL;