我试图根据用户提示在表中选择一个值,然后使用用户提示更新该值。如果在表中未找到任何值,则将引发未找到数据异常。
我已经能够选择记录并根据提示输出字符串。当我要求新的邮政编码并进行更新时,就会出现问题。
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"
答案 0 :(得分:1)
您正在尝试UPDATE
名为CASCADE
的表:
UPDATE CASCADE zipcodes
只需摆脱CASCADE
,它就会按预期工作。
更新
Oracle不支持ON UPDATE CASCADE
。您应该重新考虑数据模型-使用替代键而不是自然键,然后,您永远不必更新主键/外键。