首页 > 代码库 > ORA-06547: INSERT, UPDATE 或 DELETE 语句必须使用 RETURNING 子句

ORA-06547: INSERT, UPDATE 或 DELETE 语句必须使用 RETURNING 子句

产生这个错误的原因:

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;


 


 

 

 

ORA-06547: INSERT, UPDATE 或 DELETE 语句必须使用 RETURNING 子句