ORA-06547: INSERT, UPDATE 或 DELETE 語句必須使用 RETURNING 子句,ora-06547returning
產生這個錯誤的原因:
returning into子句作用於insert,update,delete,上而select則不行,應該用into。
報錯的儲存如下:
create or replace procedure p_stu_info(s_id number, s_name varchar2) is v_name varchar2(10); v_age number; v_ErrMsg varchar2(200);begin execute immediate 'select name,age from student_test where id=:1 and name=:2' using s_id, s_name returning into v_name, v_age; dbms_output.put_line(v_name || '的年齡為:' || to_char(v_age));exception when others then v_ErrMsg := SUBSTRB(SQLERRM, 1, 200); dbms_output.put_line('找不到相應學生');end p_stu_info;
改成下面這樣就ok了:
create or replace procedure p_stu_info(s_id number, s_name varchar2) is v_name varchar2(10); v_age number; v_ErrMsg varchar2(200);begin execute immediate 'select name,age from student_test where id=:1 and name=:2' into v_name, v_age using s_id, s_name; dbms_output.put_line(v_name || '的年齡為:' || to_char(v_age));exception when others then v_ErrMsg := SUBSTRB(SQLERRM, 1, 200); dbms_output.put_line('找不到相應學生,錯誤原因:'||v_ErrMsg);end p_stu_info;