我正在尝试使用tOracleRow创建一个表。我正在尝试使用The Below语句创建Table:
DROP TABLE TEMP_ORDERS;
CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID;
现在的问题是这个查询运行正常sql Developer.Whereas当我在tOracleRow
或tOracleinput
粘贴此查询时,它说的是无效的char。然后我尝试删除{{1}但是它说SQL命令没有正确结束。
答案 0 :(得分:1)
可以让tOracleRow
一次执行多个语句。
您需要提供一个"附加参数"到您正在使用的连接:allowMultiQueries=true
新建连接向导:
如果您使用多个语句,还需要在BEGIN END
组件中使用tOracleRow
块。在结束END
关键字后,您还需要有分号。
使用BEGIN END块的多个语句:
答案 1 :(得分:1)
在您的查询中,您使用的是DML以及多个查询。因此,您需要执行以下操作才能使工作正常进行:
i)使用tOracleConnection打开oracle连接。在其他参数集allowMultiQueries=true
ii)使用tOracle行执行查询。用分号分隔查询。
答案 2 :(得分:0)
尝试:
"
DROP TABLE TEMP_ORDERS;
CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID
"
请求结尾没有;
答案 3 :(得分:0)
而是使用 tOracleRow ,您可以同时使用 tOracleInput 和 tOracleOutput 组件,然后只使用选择查询 "从ITEMS中选择a.ITEM_NAME,b。MANUFACTURER_NAME a 左外联合制造商b ON a.MANUFACTURER_ID = b.MANUFACTURER_ID "作为tOracleInput查询然后选择"删除并创建表"在 tOracleOutput
表上的操作下答案 4 :(得分:0)
tOracleRow的目的是为每个talend记录流执行一个语句..所以如果你给DROP&在一个tOracleRow中创建语句它根据我的知识不起作用..
您可以尝试以下选项。
- >将您的两个语句分成两个tOracleRow组件或 - >创建一个PLSQL块并在tOracleRow中使用它,如下所示 " BEGIN EXECUTE IMMEDIATE' DROP TABLE TEMP_ORDERS&#39 ;; 执行立即'创建表TEMP_ORDERS AS 从ITEMS中选择a.ITEM_NAME,b。MANUFACTURER_NAME a 左外联合制造商b ON a.MANUFACTURER_ID = b.MANUFACTURER_ID&#39 ;; END;"
让我知道它是否成功
答案 5 :(得分:0)
解决方案基于之前的帖子。
1)在oracle连接中你必须包含" allowMuliQueries = true"。
2)每个查询都需要使用BEGIN END
并插入EXECUTE IMMEDIATE
- >
BEGIN
EXECUTE IMMEDIATE'DROP TABLE TEMP_ORDERS';
EXECUTE IMMEDIATE'CREATE Table TEMP_ORDERS AS
select a.ITEM_NAME,b.MANUFACTURER_NAME from ITEMS a
LEFT OUTER JOIN MANUFACTURERS b
ON a.MANUFACTURER_ID=b.MANUFACTURER_ID';
END
;