将值插入表中并通过PL./SQL插入一个额外的列

时间:2014-07-19 08:03:07

标签: sql oracle plsql

我将光标中的值插入到两个表中。表A和B. 但是B中将有一个额外的列

QUERY

CREATE OR REPLACE PROCEDURE fast_proc (p_array_size IN PLS_INTEGER DEFAULT 100)
IS

TYPE ARRAY IS TABLE OF all_objects%ROWTYPE;
l_data ARRAY;

    CURSOR c IS
    SELECT col1 ,col2,col3
    FROM dual;

BEGIN
    OPEN c;
    LOOP
    FETCH c BULK COLLECT INTO tableB LIMIT p_array_size ;

    FORALL i IN 1..tableB .COUNT
    INSERT INTO t2 VALUES tableB (i);

    EXIT WHEN c%NOTFOUND;
    END LOOP;
    CLOSE c;
END fast_proc;

但由于状态列未填满,这给了我错误。如何插入光标中的所有值,然后将状态添加为已编码的' A'。

我无法在查询中添加它,因为将在表A中使用相同的游标。

1 个答案:

答案 0 :(得分:0)

如果您尝试在光标中进行部分提取并将其插入表中,然后再向表中添加状态,为什么不同时执行此操作?

CURSOR c IS
SELECT col1 ,col2,col3,'A'
FROM dual;

' A'是状态列的来源。

如果您只想在光标提取后插入值,那么将insert语句更改为如下所示:

INSERT INTO t2(col1 ,col2,col3) VALUES tableB(i);

指定应进行插入的列,即保留状态列。