使用来自其他两个 table 的数据插入 table,在 SQLDeveloper 上使用 PL/SQL

Inserting into table using data from two other tables, using PL/SQL on SQLDeveloper

我正在编写一个 PL/SQL 过程,我需要根据来自两个不同表的两列的相等性插入 Table。

这是我的代码:

create or replace PROCEDURE insertSomething
IS
BEGIN
  INSERT INTO MYDBP ( ZIP )
  SELECT POSTCODE
  FROM ZIPDBP
  WHERE ZIPDBP.ZIP = OTHERDBP.ZIP;
  COMMIT;
END;

我收到一条错误消息,指出 OTHERDBP.ZIP 是一个无效的标识符。有什么问题?

编辑:

为了获得我预期的输出,我需要在两个表 ID 之间添加另一个相等语句,但我再次获得无效标识符,这次是 DBP_CLIENTS.ID。这是代码

INSERT INTO DBP_CLIENTS ( POSTCODE )
SELECT POSTCODE
FROM DBP_POSTCODE, HELENS_DATA
WHERE DBP_POSTCODE.LOCALITY = HELENS_DATA.SUBURB
AND DBP_POSTCODE.STATE = 'NSW'
AND DBP_CLIENTS.ID = HELENS_DATA.ID;
COMMIT;

试试这个:

create or replace PROCEDURE insertSomething
IS
BEGIN
    INSERT INTO MYDBP ( ZIP )
        SELECT POSTCODE
    FROM ZIPDBP, OTHERDBP
    WHERE ZIPDBP.ZIP = OTHERDBP.ZIP;
    COMMIT;
END;

您必须将 otherdbp 添加到 from 部分。而且您不需要在过程声明中使用 () 。 另外,insert是pl/sql中的保留字,所以过程必须有不同的名字

您必须在 FROM 子句中添加 DBP_CLIENTS:

 INSERT INTO DBP_CLIENTS ( POSTCODE )
 SELECT POSTCODE
 FROM DBP_POSTCODE, HELENS_DATA, DBP_CLIENTS
  WHERE DBP_POSTCODE.LOCALITY = HELENS_DATA.SUBURB
  AND DBP_CLIENTS.ID = HELENS_DATA.ID
  AND DBP_POSTCODE.STATE = 'NSW';
 COMMIT;