create or replace procedure sunjq_test(p_func_id IN VARCHAR2) is v_sql varchar2(5000);
begin
v_sql := 'create table sunjq_test_base as select * from func_config';
execute immediate v_sql;
v_sql := 'create table sunjq_test_select as select func_id,func_desc from sunjq_test_base';
execute immediate v_sql; commit;
exception
when others then
dbms_output.put_line('异常');
end;为什么最后会显示异常,我的动态SQL语句没问题啊?
另外:如果我想分别判断上述两个动态SQL到底是哪出了问题,或者是分别判断异常,而不是在最后写一个exception,该怎么弄
begin
v_sql := 'create table sunjq_test_base as select * from func_config';
execute immediate v_sql;
v_sql := 'create table sunjq_test_select as select func_id,func_desc from sunjq_test_base';
execute immediate v_sql; commit;
exception
when others then
dbms_output.put_line('异常');
end;为什么最后会显示异常,我的动态SQL语句没问题啊?
另外:如果我想分别判断上述两个动态SQL到底是哪出了问题,或者是分别判断异常,而不是在最后写一个exception,该怎么弄
解决方案 »
- 新手求助 oracle sqlplus登陆问题
- oracle11g问题
- 怎么commit或 rollback v$transaction里的某个事物
- 2条SQL语句返回的结果相同,如何比较哪个执行效率更高?
- ORA-07445,执行存储过程中报错??????????在线等待!!!!!!!!!!!!!!!1
- 如何写delete方法?
- 请教触发器的问题,着急
- 天啦!Oracle怎么这么难用呀,要备份一个东西,说要在OMS方式下,用OMS这种方式进,怎么这进不去,救救我呀!高分请教
- 这个SQL语句怎么写?????在线等待。。。。
- 救命啊!windows2000server+oracle9数据库重启后tnslistner无法启动!
- 急:Oracle10g下创建表空间的问题
- oracle 中 多表查询后产生的新表 的属性 和原表属性 一样嘛?
v_sql varchar2(5000);
begin
v_sql := 'create table sunjq_test_base as select * from func_config;';
v_sql := v_sql||'create table sunjq_test_select as select func_id,func_desc from sunjq_test_base;';
execute immediate v_sql;
exception
when others then
dbms_output.put_line('异常'||sqlerrm);
end;
不知道是不是这个报的错,pl/sql里定义变量能这么大么?
v_sql varchar2(5000);
begin
begin
v_sql := 'create table sunjq_test_base as select * from func_config;';
v_sql := v_sql||'create table sunjq_test_select as select func_id,func_desc from sunjq_test_base;';
execute immediate v_sql;
exception
when others then
dbms_output.put_line('异常'||sqlerrm);
end;
end;
dbms_output.put_line(SQLCODE);
dbms_output.put_line(SQLERRM);测试显示说
-1031
ORA-01031: 权限不足
为什么动态授权呢,直接给用户授建表权限就可以了吧
确定当前用户有创建表的权限。