2014-09-19 1 views
0

Когда я использую этот запрос, он отлично работает в любой точке студии в муле. Но теперь в студии Anypoint говорится, что она устарела, поэтому я использовал новую конфигурацию db details, как указано ниже, но она дает сообщение об ошибке, как указано ниже, с новыми подробностями запроса.проблема базы данных anypoint studio для выражения

<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="syncdb" queryTimeout="-1" connector-ref="auth-quickbooks_companies" doc:name="Database"> 
    <jdbc-ee:query key="syncdb" value="MERGE INTO SIAS_ACCESS dest USING(SELECT '${companyName}' ACCT_SYSTEM_COMPANY_NAME, 
     #[message.payload.accessToken] access_token, #[message.payload.accessTokenSecret] 
     access_token_secret,#[message.payload.realmId] ACCT_SYSTEM_COMPANY_ID FROM dual) 
     src ON(dest.ACCT_SYSTEM_COMPANY_ID = src.ACCT_SYSTEM_COMPANY_ID) 
     WHEN MATCHED THEN UPDATE SET dest.access_token = src.access_token, 
     dest.access_token_secret = src.access_token_secret, dest.ACCT_SYSTEM_COMPANY_NAME = src.ACCT_SYSTEM_COMPANY_NAME, 
     ACCESS_TOKEN_LIFETIME = SYSDATE 
     WHEN NOT MATCHED THEN 
     INSERT(ACCESS_ID, ACCT_SYSTEM_COMPANY_NAME, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, ACCT_SYSTEM_COMPANY_ID, ACCESS_TOKEN_LIFETIME) VALUES(SIAS_ACCESS_SEQ.nextval, src.ACCT_SYSTEM_COMPANY_NAME, src.access_token, src.access_token_secret, src.ACCT_SYSTEM_COMPANY_ID, SYSDATE)"/> 
</jdbc-ee:outbound-endpoint> 

Новый дб запрос: с операции, как выполнение DDL

<db:execute-ddl config-ref="Oracle_Configuration" doc:name="Database"> 
<db:dynamic-query><![CDATA[MERGE INTO SIAS_ACCESS dest USING(SELECT '${companyName}' ACCT_SYSTEM_COMPANY_NAME, 
    #[message.payload.accessToken] access_token, #[message.payload.accessTokenSecret] 
    access_token_secret,#[message.payload.realmId] ACCT_SYSTEM_COMPANY_ID FROM dual) 
    src ON(dest.ACCT_SYSTEM_COMPANY_ID = src.ACCT_SYSTEM_COMPANY_ID) 
    WHEN MATCHED THEN UPDATE SET dest.access_token = src.access_token, 
    dest.access_token_secret = src.access_token_secret, dest.ACCT_SYSTEM_COMPANY_NAME = src.ACCT_SYSTEM_COMPANY_NAME, 
    ACCESS_TOKEN_LIFETIME = SYSDATE 
    WHEN NOT MATCHED THEN 
    INSERT(ACCESS_ID, ACCT_SYSTEM_COMPANY_NAME, access_token, access_token_secret, ACCT_SYSTEM_COMPANY_ID, ACCESS_TOKEN_LIFETIME) VALUES(SIAS_ACCESS_SEQ.nextval, src.ACCT_SYSTEM_COMPANY_NAME, src.access_token, src.access_token_secret, src.ACCT_SYSTEM_COMPANY_ID, SYSDATE)]]></db:dynamic-query> 
</db:execute-ddl> 

ОШИБКА:

Root Exception stack trace: 
java.sql.SQLSyntaxErrorException: ORA-00972: identifier is too long  
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91) 

Вместо Операция DDL Я выбрал Insert (пробовал с выбора/обновления) с Тип запроса как Par ameterized, он дает мне ошибку, как:

Query type must me '[INSERT, STORE_PROCEDURE_CALL]' but was 'DDL' 
+0

Я думаю, вам следует удалить

ответ

2

MERGE ошибочно признан как DDL работы по новому разъему DB.

См: https://github.com/mulesoft/mule/blob/mule-3.x/modules/db/src/main/java/org/mule/module/db/internal/parser/SimpleQueryTemplateParser.java#L48-L53

И возврат к DDL здесь: https://github.com/mulesoft/mule/blob/mule-3.x/modules/db/src/main/java/org/mule/module/db/internal/parser/SimpleQueryTemplateParser.java#L97

Я предлагаю вам открыть JIRA: https://www.mulesoft.org/jira/browse/MULE/ и продолжать использовать разъем jdbc на данный момент.

+1

В 3.6.1.CE я могу выпустить оператор базы данных MERGE для соединения JDBC Oracle, если Я установил операцию «Выполнить DDL». Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^