0

Spring 2.7.11 で Camel 2.13.1 を使用し、SQL コンポーネントを使用して更新クエリを実行しようとすると SQL 例外を受け取ります。以下は、更新クエリをルートに追加する方法です。本文で java.util.Map を使用して、入力パラメーター値をこのステートメントに渡します。

主な問題:準備されたステートメントに入力パラメーターが1つしかない場合、正常に動作します..以下の更新クエリのように複数ある場合、SQL例外で失敗します

<route id="ABC" >

   <from uri="direct:sqlInsert" />
   <process ref="sqlProcessor" />

   <to uri="sql:UPDATE myTable set key1=:#value1, key2=:#value2, key3=:#value3 where req1=:#reqValue1" />

</route>

camel-JDBC を使用しても同じ問題に直面する

<route id="ABC" >

      <from uri="direct:sqlInsert" />
      <process ref="sqlProcessor" />

      <setBody>
            <constant>UPDATE myTable set key1=:?value1, key2=:?value2, key3=:?value3 where req1=:?reqValue1</constant>
        </setBody>
        <to uri="jdbc:customDatasource?useHeadersAsParameters=true" />  

 </route>

これは、私がいつも目にする SQL 例外です。

JMS メッセージ リスナーの実行に失敗しました。原因: [ org.apache.camel.RuntimeCamelException - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 不適切な SQL 文法 []; ネストされた例外は java.sql.SQLSyntaxErrorException: ORA-00942: テーブルまたはビューが存在しません ]: org.apache.camel.RuntimeCamelException: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 不適切な SQL 文法 []; ネストされた例外は java.sql.SQLSyntaxErrorException: ORA-00942: テーブルまたはビューが存在しません

注: データベース接続とデータベース テーブルに問題はありません

4

3 に答える 3

0

この質問では、誰かが同じエラーを抱えていました。彼は引数の型を変更することでそれを解決します。引数が適切な型であるかどうかを検証してみてください。あなたが試みるように、すべての引数をハードコードせずにハードコードしてみてください。ただし、ハードコードされた引数は変更しないでください。そうすれば、エラーの原因となっている引数を特定できます。

于 2015-10-13T09:56:39.410 に答える
0

I also had the same problem, however, I found the solution for it.

sql:UPDATE myTable set key1=:#value1, key2=:#value2, key3=:#value3 where req1=CAST(:#reqValue1 as NCHAR(25))

In the where clause alone, ensure that you give the length of characters as seen in the query.

Let us know if it solves your problem as well.

Other: Its working i had the same problem and this resolve the error

于 2017-08-11T10:15:52.303 に答える