ORA-02149与变量赋值

最近在将一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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/38542/viewspace-979427/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值