INSERT得到错误ORA-00904:" txt.col3"不合法的识别符

时间:2018-05-24 09:54:33

标签: sql oracle plsql case

我创建了一个存储过程。在那个存储过程中我想要的是 col1 & col2 与员工匹配,然后插入员工的唯一记录。如果未找到,则匹配 col1 col2 &的值 col3 员工 匹配,然后插入值。如果在匹配所有这些列时也找不到,则使用另一列插入记录。 还有一件事我需要通过传递另一个列值找到像 emp_id 这样的值列表,如果单个记录不能匹配,那么make emp_id as NULL

CREATE OR REPLACE PROCEDURE sp_ex
AS
    ---------

    TYPE rec IS TABLE OF txt%ROWTYPE;                     --Staging table

    v_rec    rec := rec ();
    v_col1   tbl1.col1%TYPE;
BEGIN
    SELECT *
      BULK COLLECT INTO v_rec
      FROM txt;

    FOR i IN v_rec.FIRST .. v_rec.LAST
    LOOP
        SELECT col1
          INTO v_col1
          FROM tbl1
         WHERE EXISTS
                   (SELECT col1
                      FROM tbl1
                     WHERE tbl1.col1 = v_rec(i).col1);

        INSERT WHEN txt.col1 = v_rec(i).col1 AND txt.col2 = v_rec(i).col2
        THEN
            INTO main_table(col1, ....)
               values(v_rec(i).col1, ....)
        WHEN   txt.col1 = v_rec(i).col1 AND txt.col2 = v_rec(i).col2
              AND txt.col3 = v_rec(i).col3
        THEN
            INTO main_table(col1, ....)
               values(v_rec(i).col1, ....)
        ELSE
            INTO main_table(col1, ....) values(v_rec(i).col1, ....)
                SELECT *
                  FROM txt
                 WHERE txt.col4 = v_rec.col4;
    END LOOP;
END sp_ex;
tbl1 中的 col1 txt 中的 col1 都不同。

我在编译此存储过程ORA-00904: "txt.col3" INVALID identifier时发现错误。如何解决此问题以及如何在使用 CASE IF ELSIF 语句时将值从登台插入主表。你能不能帮助我,以便我可以编译存储过程。

0 个答案:

没有答案