使用PL / SQL将数据从表插入到另一个表中

时间:2014-03-23 12:42:27

标签: sql plsql

我有一个名为Logiciel的表:

Name        Null?    Type
 ---------- -------- -------------
 NLOG       NOT NULL VARCHAR2(5)
 NOMLOG     NOT NULL VARCHAR2(20)
 DATEACH             DATE
 VERSION             VARCHAR2(7)
 TYPELOG             VARCHAR2(9)
 PRIX                NUMBER(6,2)

使用PL/SQL我想添加一个与NLOG = 'log3'条目具有相同数据的条目,以及值PRIX作为PRIX的平均值:AVG(PRIX)所有参赛作品。

这是我写的剧本:

DECLARE
    unLog LOGICIEL%ROWTYPE;
    moy LOGICIEL.PRIX%TYPE;
BEGIN
    SELECT AVG(PRIX) INTO moy FROM LOGICIEL;
    SELECT * INTO unLog FROM LOGICIEL WHERE NLOG='log5';
    unLog.PRIX := moy;
    unLog.NLOG := 'logS';
    INSERT INTO LOGICIEL SELECT * FROM unLog;
END;
/

问题是当我执行此脚本时出现此错误:

ERROR at line 9:
ORA-06550: line 9, column 37:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 9, column 2:
PL/SQL: SQL Statement ignored

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

只需使用insert . . . select

INSERT INTO LOGICIEL(NLOG, NOMLOG, DATEACH, VERSION, TYPELOG, PRIX)
    SELECT NLOG, NOMLOG, DATEACH, VERSION, TYPELOG,
           (SELECT AVG(PRIX) FROM LOGICIEL) as PRIX
    FROM LOGICIEL
    WHERE NLOG = 'log3';

编辑:

这是你的意思吗?

INSERT INTO LOGICIEL(NLOG, NOMLOG, DATEACH, VERSION, TYPELOG, PRIX)
    SELECT unlog.NLOG, unlog.NOMLOG, unlog.DATEACH, unlog.VERSION, unlog.TYPELOG, unlog.PRIX
    FROM dual;