【发布时间】:2020-05-13 21:07:39
【问题描述】:
我编写了一个函数,其中包含一个返回 True / False 值的游标。下面的代码是否正确?在这种情况下,输出会显示为“真”吗?我没有使用任何循环/结束循环。
FUNCTION get_fruit_value(pn_code in NUMBER)
RETURN VARCHAR2;
AS
nvalue varchar2;
vfru_name varchar2(100);
CURSOR C1
IS
SELECT fruit_name from grocery where grocery_code = pn_code;
-- here output has 4 values : **fruit_name = Apple, Orange, Banana, Kivi**
BEGIN
OPEN C1;
FETCH C1 into vfru_name;
if vfru_name = 'Apple' then
nvalue ='True';
else
nvalue ='False';
end if;
CLOSE C1;
RETURN nvalue;
END get_fruit_value;
或者有没有其他方法可以做到这一点?
【问题讨论】:
-
看起来好像您只期望从游标返回 1 行。那么为什么要使用游标呢?为什么不是一个 SELECT?你说“在这种情况下输出会显示为‘真’吗?”。当你为自己测试它时发生了什么? “请做需要” 什么是“需要”? SO 不是代码编写服务。
-
谢谢 EdStevens..我得到了答案。这意味着需要循环来获取多个值。我无法自己测试它,因为我失去了 sql developer tool 连接。
-
是的,游标的全部目的是抓取多行,然后循环遍历它们,一次获取一个,以便依次对每一行进行进一步处理。函数的全部目的是返回单个值。
-
您也缺少一些冒号。 "nvalue = 'True'" 不会编译。你需要 ":="
标签: oracle function return cursor