令牌长度超过最大允许长度258

时间:2017-05-24 06:13:25

标签: oracle plsql oracle11g sql-loader

我收到错误"令牌长度超过最大允许长度258"当我运行以下控制文件

 fields terminated by '|' trailing nullcols
    (
    numsus,
    mnecau,
    commod,
    snsmvt,
    typcon "CASE when :numsus =29
                then
                    case when :mnecau ='s'
                        then
                            case when :snsmvt = 'c'
                                then 'RECP'
                                 when :snsmvt = 'd'
                                 then 'NLED'
                                 end
                        when :mnecau = 'l'
                        then
                            case when :snsmvt = 'd'
                                then 'FAIL'
                                 when :snsmvt = 'c'
                                 then 'NOPYM'
                                 end         

                        end 

            END"
    )

但是,如果我删除控制文件的下面部分,它可以正常工作

when :mnecau = 'l'
                            then
                                case when :snsmvt = 'd'
                                    then 'FAIL'
                                     when :snsmvt = 'c'
                                     then 'NOPYM'
                                     end         

                            end 

1 个答案:

答案 0 :(得分:0)

你可以把所有这些都放到一个函数中并调用它。我可以建议创建一个与sqlldr相关的函数包:

...
typcon "sqlldr_lib.get_typcon(:numsus, :mnecau, :snsmvt)"
...
无论如何,它更干净,最好是封装代码,以便它可以重复使用,而且你只有一个地方可以维护代码。