如何解决遇到“ PLS-00302:必须声明组件'QUANTITY'”,尽管表中声明了“ quantity”列
我试图遍历游标以获取一些值,而我的方法类似于this answer。代码如下:
SET SERVEROUTPUT ON;
DECLARE
sold_phone_id Sale.phone_id%TYPE;
sold_count number;
BEGIN
FOR row IN (
SELECT Sale.phone_id,SUM(Sale.quantity)
FROM Sale
GROUP BY Sale.phone_id
)
LOOP
sold_phone_id := row.phone_id;
sold_count := row.quantity;
DBMS_OUTPUT.PUT_LINE(sold_phone_id || ' ' || sold_count);
END LOOP;
END;
/
但是,我遇到以下错误:
sold_count := row.quantity;
*
ERROR at line 13:
ORA-06550: line 13,column 21:
PLS-00302: component 'QUANTITY' must be declared
ORA-06550: line 13,column 3:
PL/SQL: Statement ignored
我已通过以下方式声明了Sale表:
CREATE TABLE Sale(
id number,phone_id number,quantity number,sale_date date,seller_id number,PRIMARY KEY(id),FOREIGN KEY(seller_id) REFERENCES Seller(id)
);
解决方法
您的子查询不返回此列。为sum()
使用别名:
BEGIN
FOR row IN (
SELECT phone_id,SUM(quantity) as quantity --> here
FROM Sale
GROUP BY Sale.phone_id
)
LOOP
sold_phone_id := row.phone_id;
sold_count := row.quantity;
DBMS_OUTPUT.PUT_LINE(sold_phone_id || ' ' || sold_count);
END LOOP;
END;
/
,
在循环查询中使用以下代码部分: 适度的SUM(销售量)
然后在第15行使用 row.TEMPVARIABLE 而不是 row.quantity 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。