我使用的数据库是oracle 8.1.7,
若我直接使用匿名块,则可以成功创建表
begin
    execute immediate 'create table aa(x number)';
end;
/
--------------------------------------------------------------------------------------------------
但是,若我在存储过程中,传递建表的SQL语句进入后,
再执行immediate却创建不了表,
执行"execute immediate ip_sqlstr"时有异常,
直接跳到exception,但是sqlcode和SqlErrM却没有值.
不知是什么原因,请大侠指教,谢谢!
--------------------------------------------------------------------------------------------------
create or replace procedure sp_create_table2(ip_owner   varchar2, --用户
ip_table_name varchar2, --表名
ip_sqlstr     varchar2 --SQL语句
) is
  lv_flag       char(1);
  lv_owner      varchar2(50);
  lv_table_name varchar2(50);
begin
  lv_owner      := upper(ip_owner);
  lv_table_name := upper(ip_table_name);
  execute immediate ip_sqlstr;
exception
  when others then
    dbms_output.put_line('错误号:' || sqlcode);
    dbms_output.put_line('错误描述:' || SqlErrM);
end;
/
execute immediate sp_create_table2('scott','aa','create table aa(x number)');PL/SQL procedure successfully completed