使用来自其他两个 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;
我正在编写一个 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;