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;?