【发布时间】:2020-04-23 10:44:26
【问题描述】:
我几天前写了一个问题,我终于设法找到了解决方案,但我现在还有一个问题。引入大陆名称时必须显示 DBMS.OUTPUT_PUT.LINE 消息,如果该名称不在数据库中,则会显示错误。我的问题是出现正确的消息,但不会出现错误消息。会是什么呢?提前致谢!正如我在上一个问题上所说,有些名字是用西班牙语写的,因为我的老师想让我们这样做,但它们很容易理解。
DECLARE
no_existe EXCEPTION;
variable number;
CURSOR listado_paises is
SELECT *
FROM paises
WHERE paises.cod_continente in
(select cod_continente
FROM continentes
WHERE nombre = '&escribe_nombre_cont');
BEGIN
FOR i in listado_paises
LOOP
UPDATE paises
SET visualizado = 'Si'
WHERE cod_continente = i.cod_continente;
SELECT count(*)
into variable
FROM paises
WHERE paises.cod_continente in
(select cod_continente
FROM continentes
WHERE nombre = '&escribe_nombre_cont');
IF variable = 0 THEN RAISE no_existe; END IF;
DBMS_OUTPUT.PUT_LINE('Nombre pais: ' || i.nombre);
COMMIT;
END LOOP;
EXCEPTION
WHEN no_existe THEN
DBMS_OUTPUT.PUT_LINE('El continente no existe, por favor, revise el nombre');
END;
这段代码如果工作正常,只是第二条消息不会出现!
【问题讨论】:
-
“如果该名称不在数据库中” - 这是否意味着您应该检查它是否存在于
continentes中,而不是是否有任何paises行? -
感谢巴巴罗斯和亚历克斯的回复!我已经尝试了这两种解决方案,但亚历克斯的解决方案对我有用!你们都这么快回答我的问题:)
-
祝帕科好运。
-
查找大陆似乎是一种非常复杂的方法。 Parece una manera muy complicada de detectar uncontine,
标签: oracle plsql database-cursor