Oracle11g SQLLDR控制文件中的多个case语句

Oracle11g SQLLDR控制文件中的多个case语句,oracle11g,etl,sql-loader,case-statement,Oracle11g,Etl,Sql Loader,Case Statement,我正在使用一个控制文件将数据加载到运行在Windows7机器上的Oracle11g中。我无法用下面的case语句加载数据,我尝试了不同的方法,但没有成功。有什么建议吗?(在日志文件中,错误为: 记录1:已拒绝-表employee中的错误,列blah。 ORA-00905:缺少关键字 记录2:已拒绝-表employee中的错误,列blah。 ORA-00905:缺少关键字,…等等 代码是: Options (skip=1) load data APPEND INTO TABLE em

我正在使用一个控制文件将数据加载到运行在Windows7机器上的Oracle11g中。我无法用下面的case语句加载数据,我尝试了不同的方法,但没有成功。有什么建议吗?(在日志文件中,错误为:

记录1:已拒绝-表employee中的错误,列blah。 ORA-00905:缺少关键字

记录2:已拒绝-表employee中的错误,列blah。 ORA-00905:缺少关键字,…等等

代码是:

  Options (skip=1)

  load data
  APPEND INTO TABLE employee
  fields terminated by "\t"
  TRAILING NULLCOLS
  (
  a,
  b,
  c,
  d,
  blah "CASE WHEN :b='k' THEN 'LPAD(:blah,6,'0')'
             WHEN :b='s' AND :d='p' THEN 'LPAD(:blah,11,'0')'
             WHEN :b='s' AND :d='pr' THEN 'LPAD(:blah,8,'0')'
     END",
  g,
  h, 
  i
  )

您已经用单引号包围了
LPAD
调用,这就是它们不起作用的原因

blah "CASE WHEN :b='k' THEN LPAD(:blah,6,'0') 
         WHEN :b='s' AND :d='p' THEN LPAD(:blah,11,'0')
         WHEN :b='s' AND :d='pr' THEN LPAD(:blah,8,'0')
     END",
...