首页 > 解决方案 > 从oracle sql中的函数中的游标返回值?

问题描述

我编写了一个包含返回 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;

或者有没有其他方法可以做到这一点?

标签: oraclefunctionreturncursor

解决方案


我推荐使用 FOR LOOP 语句(更多信息:https ://www.oracletutorial.com/plsql-tutorial/plsql-cursor-for-loop/ )

用你的例子:

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

 FOR record IN C1
 LOOP

   if record.fruit_name = 'Apple' then
    nvalue ='True';
   else 
    nvalue ='False';
  end if;

END LOOP;     

RETURN nvalue;

END get_fruit_value;

我希望能有所帮助。


推荐阅读