Plsql 如何在PL/SQL中的函数中使用游标

Plsql 如何在PL/SQL中的函数中使用游标,plsql,oracle11g,Plsql,Oracle11g,我有一个作业,课程材料没有介绍如何做,而且关于函数中的游标,网络搜索也没有帮助 赋值是返回数据库中的所有姓氏,但根据case语句参数更改任何姓氏。我需要使用光标。这是我的密码: create or replace function Convert_New_Name return sys_refcursor as c_results sys_refcursor; begin open c_results for

我有一个作业,课程材料没有介绍如何做,而且关于函数中的游标,网络搜索也没有帮助

赋值是返回数据库中的所有姓氏,但根据case语句参数更改任何姓氏。我需要使用光标。这是我的密码:

create or replace function Convert_New_Name

        return sys_refcursor
    as
        c_results sys_refcursor;
    begin
        open c_results for
            select 
                  case last_name
                       when 'King' then 'LION'
                       when 'Ford' then 'CAR'
                       when 'Miller' then 'BEER'
                       else last_name
                   end as new_name
            from   employees;

        return c_results;
    end convert_new_name;
我很难在搜索中找到任何相关的东西。数据库有20行。此代码返回所有20行,并进行必要的更改,但它将20行返回20次,而不是一次


这里有另一篇文章,内容几乎相同,但当我试图在那里发表文章时,它被删除了,我被告知要问我自己的问题。

你发表的功能代码很好。调用代码应该只调用函数
Convert\u New\u Name
一次。如果您计划从SQL语句调用它,则此查询应执行以下操作:

Select Convert_New_Name() From dual;

这个函数看起来不错。请发布调用函数的代码。
从employees中选择convert_new_name()啊,现在我明白了。该函数返回20行,并被调用20次:employees表中的每行调用一次。请参阅我修改的答案。