2017-08-06 80 views
0

我有一個任務,課程材料不包括如何執行此操作,並且網絡搜索對功能中的遊標沒有幫助。如何在PL/SQL中的函數中使用遊標

該賦值是返回數據庫中的所有姓氏,但根據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次,而不是一次。

在這裏有另一個職位,幾乎相同的任務,但當我試圖發佈在那裏,它被刪除,並被告知要問自己的問題。

+1

函數看起來不錯。請發佈調用該函數的代碼。 – Kirby

+0

'select convert_new_name()from employees;' – David

+0

啊,現在我明白了。該函數返回20行並被調用20次:employees表中的每一行都有一次。請參閱我的修訂答案。 – Kirby

回答

0

您發佈的功能代碼很好。呼叫代碼應調用功能Convert_New_Name只有一次。如果您計劃從SQL語句中調用它,則此查詢應執行以下任務:

Select Convert_New_Name() From dual;