我正在编写一个PL / SQL过程,我需要根据两个不同表中两列的相等性插入表中。
这是我的代码:
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;
答案 0 :(得分:2)
试试这个:
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中的保留字,因此过程必须具有不同的名称
答案 1 :(得分:0)
您必须在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;