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; 更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址