1

ほとんどの場合、固定クエリ (静的な最終文字列) が機能し、断続的に次のエラーがスローされる原因を知っている人はいますか?

内部原因: java.sql.SQLException: ORA-00904: : 無効な識別子

クエリは JDBC 接続を介して実行されています。

ここで興味深いのは、識別子が空であり、もちろんクエリが断続的に機能することです。ログアウトしたSQLを取り、plsql開発者を介して実行すると、すべて正常に動作します。

何か案は?

これがクエリです。セキュリティ上の理由から難読化されています。

    SELECT b.field1,
       b.field2,
       b.field3,
       my_func(b.field4, ?, nvl2(b.field5, 1, 0)) cardnumber,
       b.field6,
       b.field7,
       b.field8,
       b.field9,
       b.field10,
       b.field11,
       b.field12,
       b.field13,
       b.field14,
       b.field15,
       b.field16,
       b.field17,
       b.field18,
       b.field19,
       b.field20,
       b.field21,
       b.field22,
       b.field23,
       b.field24,
       b.field25,
       b.field26,
       my_func(b.field27, ?, nvl2(b.field28, 1, 0)) account_number,
       b.field29,
       s.field30 source_name,
       b.field31
  from table1 b
  left join table2 s
    on b.source_id = s.source_id
 where b.fieldx in
       (select fieldx from tablex where fieldy = ?)
   and customer_id = ?
   and state not in (7, 12, 1, 3, 13)
UNION
SELECT b.field1,
       b.field2,
       b.field3,
       my_func(b.field4, ?, nvl2(b.field5, 1, 0)) cardnumber,
       b.field6,
       b.field7,
       b.field8,
       b.field9,
       b.field10,
       b.field11,
       b.field12,
       b.field13,
       b.field14,
       b.field15,
       b.field16,
       b.field17,
       b.field18,
       b.field19,
       b.field20,
       b.field21,
       b.field22,
       b.field23,
       b.field24,
       b.field25,
       b.field26,
       my_func(b.field27, ?, nvl2(b.field28, 1, 0)) account_number,
       b.field29,
       s.field30 source_name,
       b.field31
   from table1 b
   left join table2 s
    on b.source_id = s.source_id
   where b.field3 in
       (select fieldx from table7 where fieldy = ?)
   and customer_id = ?
   and state in (1, 3)
   AND (b.field1 not in
       (select b.fieldx
           from table1 b,
                table3 sb,
                table4 sba
          where b.source_id = sb.source_id
            and sb.attribute_id = sba.attribute_id
            and sba.name = 'HIDE_IN_MENU'
            and b.customer_id = ?))
4

3 に答える 3

1

ステートメントはどのように実行されますか? 問題を引き起こす可能性のある変数のバインドではなく、何らかの形式の連結がある場合。バインド値が定義されていないか、ジャンク値が含まれている可能性があります。

エラーは、呼び出しステートメントではなく MY_FUNC の実行から発生している可能性があります。

于 2011-02-03T22:45:11.727 に答える
0

バグ 5355253、5458021、5717746 などのようなものです。共有プールをフラッシュしてみてください。これはほとんどの場合に役立ちます。そうでない場合は、DBMS のバージョンやプラットフォームなどの追加情報を提供できます。

于 2011-02-03T11:47:04.173 に答える