我正在尝试使用jdbcTemplate().update方法删除队列。这是-
getJdbcTemplate().update("call DBMS_AQADM.DROP_QUEUE_TABLE (?, ?)", qTableName.toUpperCase(),true);DBMS_AQADM.DROP_QUEUE_TABLE有两个参数。1)强制为字符串,2) queue_table为布尔值。
当我尝试运行上面的代码时,我得到-
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)作为参数传递。
我真的很想知道有没有办法解决这个问题。
发布于 2015-07-14 19:43:27
布尔参数为not supported。建议使用int参数编写自己的包装器过程,或者使用固定的TRUE参数传递PL/SQL块:
BEGIN
DBMS_AQADM.DROP_QUEUE_TABLE(
queue_table => ?,
force => TRUE);
END;https://stackoverflow.com/questions/31405045
复制相似问题