我不确定这是否可行,但这是我在sql loader文件中选择表达式的问题。
我有两张桌子。
表1
IDENTITYNUMBER
ID NUMBER
100 8
200 9
表2
TESTTABLE
NAME ID
John 100
装载程序sql的数据文件
Jim,8
Carol,9
现在,我想通过将第二个数字替换为第一个表中的id来在测试表中加载此数据。
这就是我的test.ctl文件的样子
load data
append
into table testtable
fields terminated by ',' optionally enclosed by '"'
(
NAME,
ID EXPRESSION "(select i.id from identitynumber i where i.number = :ID)"
)
但我一直收到这个错误: SQL * Loader-291:列ID
的SQL字符串中的无效绑定变量ID我希望在成功执行加载程序脚本后,表2看起来像这样。
TESTTABLE
NAME ID
John 100
Jim 100
Carol 200
任何指针都将非常感激。
答案 0 :(得分:3)
没有“表达”
ID“(从身份编号i中选择i.id,其中i.number =:ID)”
答案 1 :(得分:1)
我认为sqlldr EXPRESSION中不允许使用select 功能是:
create function idtestfun(p_num in number) return number
is
l_num number;
begin
select id into l_num from identitynumber where "number"= p_num;
return l_num;
end;
并使用它sqlldr config:
ID "idtestfun(:ID)"