oracle merge into解析不正确

jenny825 发布于 2013/09/11 09:03
阅读 239
收藏 0

MERGE INTO tb_xxx A
USING (

) B ON (A.CUSTOMER_ID = B.CUSTOMER_ID AND A.ITEM_ID = B.ITEM_ID)

SQLFormat后,会变成如下:

MERGE INTO tb_xxx A
USING (

) B ON A.CUSTOMER_ID = B.CUSTOMER_ID AND A.ITEM_ID = B.ITEM_ID

其中,红色的SQL部分,在Oracle中,执行不过去的 ,括号是不能去掉的。

加载中
0
katori
katori

引用来自“jenny825”的答案

引用来自“katori”的答案

能贴一下调用代码吗?

目前暂时的方法是修改了

OracleOutputVisitor

    public boolean visit(OracleMergeStatement x) {


     print(" ON ");
       x.getOn().accept(this);

修改为:

  print(" ON (");
       x.getOn().accept(this);
       print(")");

ok~~ 已修改..
0
katori
katori
你用的是哪个版本呀~?
0
j
jenny825

引用来自“katori”的答案

你用的是哪个版本呀~?
0.2.25
0
katori
katori
能贴一下调用代码吗?
0
j
jenny825

引用来自“katori”的答案

能贴一下调用代码吗?
String sql =  "MERGE INTO SO_SALE_REMEMBER_PRICE A USING ( SELECT T1.ORG_ID, T1.CUSTOMER_ID, T2.ITEM_ID, T2.REAL_UC_TI, T2.UC_TI, T2.DISCOUNT_RATE, T1.AUDIT_DATE FROM SO_SALE_HEADERS T1, SO_SALE_LINES T2 WHERE T1.SALE_HEADER_ID = T2.SALE_HEADER_ID AND T1.SALE_HEADER_ID = :sale_header_id ) B ON (A.ORG_ID = B.ORG_ID AND A.CUSTOMER_ID = B.CUSTOMER_ID AND A.ITEM_ID = B.ITEM_ID AND A.BILL_TYPE = 'XH') WHEN MATCHED THEN UPDATE SET A.REMEMBER_REAL_UC_TI = B.REAL_UC_TI, A.UC_TI = B.UC_TI, A.DISCOUNT_RATE = B.DISCOUNT_RATE, A.AUDIT_DATE = B.AUDIT_DATE WHEN NOT MATCHED THEN INSERT VALUES (B.ORG_ID, B.CUSTOMER_ID, B.ITEM_ID, B.REAL_UC_TI, B.DISCOUNT_RATE, B.UC_TI, 0, 'XH', B.AUDIT_DATE)";


String newsql = SQLUtils.formatOracle(sql);


0
j
jenny825

引用来自“katori”的答案

能贴一下调用代码吗?

目前暂时的方法是修改了

OracleOutputVisitor

    public boolean visit(OracleMergeStatement x) {


     print(" ON ");
       x.getOn().accept(this);

修改为:

  print(" ON (");
       x.getOn().accept(this);
       print(")");

返回顶部
顶部