各位大侠:
    在oracle数据库中绑定变量分为1、静态绑定
insert into table
select * from 
table a where deal_date=v_dealyyyymmdd.
2 动态绑定
sql:="insert into table 
select * from 
table a where deal_date=:1";
execute sql using v_dealyyyymmdd;但我想问大家一个问题,如果我的表名称是这种形式tableYYMM,即每个月都会变化,我改如何绑定呢???

解决方案 »

  1.   

    这样应该可以吧
    sql:="insert into table 
    select * from 
    table" + 变量 + " a where deal_date=:1"; 
    execute sql using v_dealyyyymmdd; 
      

  2.   

    我们做仓库,数据量比较大,因此日表也做成按月分的情况,便于备份和管理。
    如table0905,表示5月份的表,但本身它是日表,里面有处理日期。各位,用同义词能解决这个问题么?
      

  3.   

    同义词也不是动态的,这个就得动态sql
    或者你可以这样:当前月用一个固定表,等这个月过去了,你见一个符合你规则的表来存储数据
    方法是这样。至于内存使用大,我也不知道什么原因。对这方面我了解比较少
      

  4.   

    请大家深入理解绑定的目的是什么,什么对象可以绑定,什么不可以绑定
    大家要明白,带绑定变量的sql是可以进行语法分析和生成执行计划的,试想如果连表名都不确定,可以吗
      

  5.   

    friendjin 说的对,表明变化是不可以绑定变量的
    这个问题最终在9i中无解
    绑定变量的目的是提高系统效率,减少共享内存空间,避免无限制使用
      

  6.   

    执行动态SQL即可,不一定非得用动态绑定