我写一个存储过程,将表A合并到表B中,两表有相同的一个字段:OID,并且有相同的记录数,所以只需要取出表A的字段名添加到表B 中,再将表A的数据SET进去就可以了。
  我用的是dbms_sql,问题是表中有的有的属性的某些值是空值,那么在column_value是传的绑定参数类型如何定义呢??比如属性是NUMBER型,循环是取到空值,还能将值赋给绑定的NUMBER型变量吗??
   小妹急求了!!

解决方案 »

  1.   

    先将A表中的空值做处理,使用nvl函数,如:nvl(col_name,0),转换为一张和A表同列名同记录数的表C,再将C合并到表B中去。
    很笨的方法!
      

  2.   

    用decode函数一下,把空值赋个特殊字符做标示,整理完后再统一改掉。
      

  3.   

    如果是空值,用nvl转换if nvl(变量,' ') ...
      

  4.   

    用nvl将空值设置成一个表中没有的数值
      

  5.   


    嘿嘿,我好像说得不太清除哈!第一次发帖,紧张!嘿嘿。我的意思是,我要得到字段名和类型,以及长度,才能将表B的列添加到表A中,字段名和类型是一定存在的,就不担心空值问题了。但是如果某个字段是NUMBER型的,这个字段的类型长度就为空,如果是VARCHAR型的,就有长一个长度值,我是用dbms_sql.column_value(cursor1, 1,DataLength)循环得到每个字段的长度,由于有的字段长度为空,就不知道DataLength设定为什么类型了…………,高手,谢谢了!!咋解决啊
      

  6.   


    呵呵,不好意思,没用过dbms_sql包,还真不知道。
    不过你DataLength返回的类型不确定,是否可以试试弱类型动态游标。