显式游标的问题

Issues with explicit cursor

我目前正在学习 PL/SQL class 并学习显式游标。我现在正在处理一项作业,遇到以下问题。

'In this assignment use an explicit cursor to display the below table. If there is a ‘Y’ in the V_ORDER of the VENDOR table then print out the vendor’s name from the VENDOR table followed by the text ' 提供产品:'后跟产品 table 提供的项目的描述。'

我开发了以下区块...

[光标块][1]

并得到以下错误...(这是使用 oracle apex) [错误消息][2]

我正在等待教授的回复,但他可能会很慢(在线课程)。任何输入将不胜感激!

更新块...

DECLARE
CURSOR cur_vendor IS
SELECT v.v_order, p.p_descript
FROM vendor v INNER JOIN product p
USING (v_code)
WHERE v.v_order = 'Y';
TYPE type_vendor IS RECORD(
name vendor.v_name%TYPE,
descript product.p_descript%TYPE);
rec_vendor type_vendor;
BEGIN
OPEN cur_vendor;
LOOP
FETCH cur_vendor INTO rec_vendor;
EXIT WHEN cur_vendor%NOTFOUND;
END LOOP;
CLOSE cur_vendor;
DBMS_OUTPUT.PUT_LINE(rec_vendor.name || ' supplies the product ' || 
rec_vendor.descript);
END;

错误非常具体,您正在使用保留字 "desc" 作为列名。要么将列名称更改为 non-reserved 单词,要么在每次使用时用双引号将其括起来。

已解决!

DECLARE
CURSOR cur_vendor IS
SELECT v.v_order, v.v_name, p.p_descript FROM product p 
natural JOIN vendor 
v;
TYPE type_vendor IS RECORD(
v_order vendor.v_order%TYPE,
v_name vendor.v_name%TYPE,
descript product.p_descript%TYPE);
rec_vendor type_vendor;
BEGIN 
OPEN cur_vendor;
LOOP
FETCH cur_vendor INTO rec_vendor;
EXIT WHEN cur_vendor%NOTFOUND;
IF rec_vendor.v_order = 'Y' THEN
DBMS_OUTPUT.PUT_LINE(rec_vendor.v_name||' supplies the product ' || 
rec_vendor.descript);
END IF;
END LOOP;
CLOSE cur_vendor;
END;