【发布时间】:2020-12-07 04:13:33
【问题描述】:
这是我的代码,我有 2 行共享相同的名称、预订日期和酒店 ID。我不明白为什么当我执行这个函数时,它给了我错误“精确提取返回的行数超过了请求的行数”,而不是在我的保留表中返回我的两行。
我假设我已经正确返回了光标,所以它应该可以工作吗?
CREATE OR REPLACE FUNCTION findres(cname IN reservation.cust_name%type,
hotelID IN reservation.hotel_id%type,
resdate IN reservation.reserve_date%type)
RETURN reservation.reserve_id%type is
resid reservation.reserve_id%type;
BEGIN
SELECT reserve_id
INTO resid
FROM reservation
WHERE Cust_name = cname
AND Hotel_id = hotelID
AND reserve_date = resdate;
RETURN resid;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('No reservation found');
END;
/
【问题讨论】:
-
您将结果返回到单个变量“resid”中。该变量只能处理 one 值。如果您的查询返回多个值,该函数将抛出错误。