Oracle

在 PL/SQL 中使用游標變數時遇到錯誤“無效的 SQL 語句”

  • June 8, 2019

大家好,希望你們一切都好。我是 PL/SQL 的新手,我正在嘗試學習 ‘cursor variable’ 。我為自己做了一個例子,一切看起來都是正確的,我不知道為什麼它不起作用。我的第一個程序是

 create or replace procedure p_get_student_detail(s_id  number,
    s_cur out sys_refcursor) AS

   Begin

    open s_cur for
    select student_name, age from student where student_id = s_id;

  end;

我使用第一個過程的輸出的第二個過程是:

Create or replace procedure s_print_data(s_id number)

  as

   type ref_cur is ref cursor;
   s_refcur       ref_cur;
   s_student_name student.student_name%type;
   s_student_age  student.age%type;

begin

   p_get_student_detail(s_id, s_refcur);

    loop
       fetch s_refcur into s_student_name, s_student_age;
       exit when s_refcur%notfound;
       dbms_output.put_line(s_student_name || s_student_age);
    end loop;
end;

當我嘗試執行該過程時,exec s_print_data (1)我看到了這個錯誤:

ORA - 00900:invalid SQL statement 

我想知道你是否可以幫助我。謝謝

好的,我發現問題出在呼叫程序的語法不正確我必須像這樣呼叫程序:

begin

  s_print_data(1);
 end;

一切正常

引用自:https://dba.stackexchange.com/questions/240118