无法使用提示更新表

时间:2019-08-13 15:01:25

标签: sql plsql

我试图根据用户提示在表中选择一个值,然后使用用户提示更新该值。如果在表中未找到任何值,则将引发未找到数据异常。

我已经能够选择记录并根据提示输出字符串。当我要求新的邮政编码并进行更新时,就会出现问题。

SET SERVEROUTPUT ON;

ACCEPT p_find_zip PROMPT 'Please enter a 5 digit zip code:'
ACCEPT p_new_zip PROMPT 'Please enter a the new 5 digit zip code:';


DECLARE

 find_zip char(5) :=&p_find_zip;
new_zip char(5) :=&p_new_zip;
v_zip  char(5);



BEGIN


SELECT zip
INTO v_zip
FROM zipcodes
WHERE zip = find_zip;

UPDATE CASCADE zipcodes 
SET zip = new_zip 
WHERE find_zip = v_zip;




EXCEPTION WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('THAT ZIP IS NOT IN THE DATABASE');


END;
/

Error report -
ORA-06550: line 17, column 8:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 17, column 1:
PL/SQL: SQL Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"

1 个答案:

答案 0 :(得分:1)

您正在尝试UPDATE名为CASCADE的表:

UPDATE CASCADE zipcodes 

只需摆脱CASCADE,它就会按预期工作。

更新

Oracle不支持ON UPDATE CASCADE。您应该重新考虑数据模型-使用替代键而不是自然键,然后,您永远不必更新主键/外键。