SET SERVEROUTPUT ON;
--VARIABLE DECLARATION
DECLARE
c_name VARCHAR(30); (Here it gives the end to file error)
p_purchaed VARCHAR2(30);
BEGIN
CURSOR( c_CustProd IS SELECT (C.cust_fName ||',' || C.cust_lName) AS "CUSTOMER", P.product_name (and then the select statement it says it was expecting a not null statment)
FROM Billing B
JOIN Product_Billing PB ON B.bill_ID = PB.bill_ID,
JOIN Customer C on B.cust_ID = C.cust_ID,
JOIN Product P on PB.product_ID = P.product_ID,
WHERE P.product_price > 10000
ORDER BY P.product_name DESC, P.product_price DESC);
OPEN c_CustProd;
LOOP
FETCH c_CustProd into c_name, p_purchaed
DBMS_OUTPUT.PUT_LINE('CUSTOMER: '||c_name);
DBMS_OUTPUT.PUT_LINE('PRODUCT: '||p_purchaed );
DBMS_OUTPUT.PUT_LINE('-------------------------------');
\
END LOOP
CLOSE c_CustProd;
END;
我对甲骨文还是个新手。但我只需要显示一个客户的名字和他们购买了什么。我已经在代码中插入了所有的变量,一切正常,但这个语句,我不知道所有的错误在哪里
2条答案
按热度按时间brc7rcf01#
有很多错误,我会尽量把它们都提到:
使用
varchar2
,不是varchar
游标应该在declare
部分,而不是之后begin
从光标中删除多余的括号在oracle中命名任何东西时不要使用双引号(不是错误,但是。。。也不是什么好处。更多的痛苦,稍后)
你从未退出循环
那个反斜杠是什么
\
在你的代码里做什么?语句必须以分号结尾
;
将此代码与您的代码进行比较。xesrikrc2#
大多数情况下,您不需要显式命名的游标或变量,最好使用更简洁的语法: