ITPub博客

首页 > 数据库 > Oracle > ORA-02149与变量赋值

ORA-02149与变量赋值

原创 Oracle 作者:shiyihai 时间:2007-10-29 17:06:16 0 删除 编辑

最近在将一heap日志表调整为partition的日志表时,发现一个问题,那就是查询分区数据时无法直接按变量来进行查询。过程如下:
insert into t_actionlog_backup
select * from t_actionlog partition(v_partition_name)

[@more@]

其中v_partition_name是我程序中传入的分区名称变量,结果无论我怎么调试都抛异常“ORA-02149: 指定的分区不存在”。
我直接在sql提示符下执行都是没问题的。见如下的过程:
declare
v_partition_name varchar2(20);
begin
v_partition_name :='p_20071016';
insert into t_actionlog_backup
select * from t_actionlog partition(v_partition_name);
end;

ORA-02149: 指定的分区不存在
ORA-06512: 在line 5

SQL>
SQL> insert into t_actionlog_backup
2 select * from t_actionlog partition(p_20071016);

46 rows inserted

SQL>
没办法,只能用动态sql来解决。
SQL> declare
2 v_partition_name varchar2(20);
3 begin
4 v_partition_name :='p_20071016';
5 execute immediate 'insert into t_actionlog_backup select * from t_actionlog partition('||v_partition_name||')';
6 end;
7 /

PL/SQL procedure successfully completed

SQL>
开始怀疑oracle数据库的低能。。。。。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38542/viewspace-979427/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    235
  • 访问量
    1669479