各位好:
     有谁帮忙把下面的SQL2000的sql语句改写成oracle的sql语句:
         select 'insert into xh_2 values('''+cast(pk_data as varchar)+''','''+pk_psndoc+''','''+year+''','''+period+''','''+isnull(data_01, 'null')+''','''+isnull(data_02, 'null')+''','''+isnull(data_03, 'null')+''','''+isnull(data_04, 'null')+''','''+isnull(data_05, 'null')+''','''+isnull(data_06, 'null')+''','''+isnull(data_07,'null')+''','''+isnull(data_08,'null')+''','''+isnull(data_09,'null')+''','''+isnull(data_10,'null')+''','''+isnull(data_11,'null')+''','''+isnull(data_12,'null')+''','''+isnull(data_13,'null')+''','''+isnull(data_14, 'null')+''','''+isnull(data_15, 'null')+''','''+isnull(data_16, 'null')+''','''+isnull(data_17, 'null')+''','''+isnull(data_18, 'null')+''','''+isnull(data_19, 'null')+''','''+isnull(data_20,'null')+''','''+isnull(data_21,'null')+''','''+isnull(data_22,'null')+''','''+isnull(data_23,'null')+''','''+isnull(data_24,'null')+''','''+isnull(data_25,'null')+''','''+isnull(data_26,'null')+''','''+isnull(data_27,'null')+''','''+isnull(data_28,'null')+''','''+isnull(data_29, 'null')+''','''+isnull(data_30, 'null')+''','''+isnull(data_31, 'null')+''','''+isnull(cast(piece_1 as varchar), 'null')+''','''+isnull(cast(piece_2 as varchar), 'null')+''','''+isnull(cast(piece_3 as varchar), 'null')+''','''+isnull(cast(piece_4 as varchar),'null')+''','''+isnull(cast(piece_total as varchar),'null')+''')' from xh_2 

解决方案 »

  1.   

    sqlserver的isnull()等于oracle 的nvl()还有不明白的,为什么null还要加单引号?
      

  2.   

     
     兄弟,报 ora-缺省左括号
      

  3.   

    CAST也要换成TO_CHAR
    cast(piece_3 as varchar)换成TO_CHAR(PIECE_3)
      

  4.   

      select 'insert into xh_2 values('''||to_char(pk_data,'yyyy')||''','||pk_psndoc ||')' from xh_2   select 'insert into xh_2 values('''||to_char(pk_data,'yyyy')||''','''||pk_psndoc ||''')' from xh_2 第一句认为pk_psndoc 为非varchar2类型
    第二句认为是varchar剩下的继续拼接吧。