首页 > 解决方案 > 返回具有替换值和游标的值列表

问题描述

当你写一个大陆的名字时,我必须编写一个返回国家列表的代码。当然,这些国家必须在那个大陆之内。返回该列表时,表 PAISES 中的 VISUALIZADO 列将更新为值“是”。必须使用游标。因为我的老师要我们这样做,所以名字是西班牙语的,但是这些词很容易理解。本练习的两个表如下:

CREATE TABLE PAISES (

COD_PAIS NUMBER(3),

NOMBRE VARCHAR2(30),

COD_CONTINENTE NUMBER(3),

VISUALIZADO VARCHAR2(2)

);

CREATE TABLE CONTINENTES (

COD_CONTINENTE NUMBER(3),

NOMBRE VARCHAR2(30)

);

我写的是:

SET SERVEROUTPUT ON;

DECLARE
v_ncont continentes.nombre%TYPE := &nombre_continente;
v_codcont continentes.cod_continente%TYPE;

cursor listado_paises is 
select cod_pais, nombre, cod_continente, visualizado
from paises;

BEGIN
if v_ncont = continentes.nombre THEN
UPDATE paises
SET visualizado = 'Si'
WHERE paises.cod_continente = continentes.cod_continente;

END if;

END;

显然它不起作用,但我不知道该怎么办!提前致谢 :)

标签: sqloracleplsql

解决方案


您应该在循环中使用光标。你能试试这个

SET SERVEROUTPUT ON;

DECLARE
v_ncont continentes.nombre%TYPE := &nombre_continente;
v_codcont continentes.cod_continente%TYPE;

cursor listado_paises is 
select cod_pais, nombre, cod_continente, visualizado
from paises;

BEGIN

for l in listado_paises
loop
if v_ncont = l.nombre THEN
UPDATE paises
SET visualizado = 'Si'
WHERE paises.cod_continente = l.cod_continente;

END if;
end loop;
END;

推荐阅读