0

jdbcTemplate().update メソッドを使用してキューを削除しようとしています。これは -

getJdbcTemplate().update("call DBMS_AQADM.DROP_QUEUE_TABLE (?, ?)", qTableName.toUpperCase(),true);

DBMS_AQADM.DROP_QUEUE_TABLE は 2 つのパラメータを取ります。1) 文字列としての queue_table および 2) ブール値としての強制。

上記のコードを実行しようとすると、次のようになります -

PreparedStatementCallback; bad SQL grammar [call DBMS_AQADM.DROP_QUEUE_TABLE (?, ?)]; nested exception is java.sql.SQLException: ORA-06553: PLS-306: wrong number or types of arguments in call to 'DROP_QUEUE_TABLE'
ORA-06553: PLS-306: wrong number or types of arguments in call to 'DROP_QUEUE_TABLE'

しかし、次のコードを実行しているときは正常に動作します-

getJdbcTemplate().update("call DBMS_AQADM.CREATE_QUEUE_TABLE (?, ?)", qTableName.toUpperCase(), payloadType.toUpperCase());

私が推測しているのは、問題は oracle オブジェクト (varchar または int ではない) をパラメーターとして渡すことです。

私は本当にこれを解決する方法があることを知りたいです。

4

1 に答える 1