簡體   English   中英

調用“ DROP_QUEUE_TABLE”時參數的數量或類型錯誤

[英]wrong number or types of arguments in call to 'DROP_QUEUE_TABLE'

我正在嘗試使用jdbcTemplate()。update方法刪除隊列。 這是-

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

DBMS_AQADM.DROP_QUEUE_TABLE采用兩個參數。 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)作為參數傳遞。

我真的很想知道有沒有辦法解決這個問題。

不支持 BOOLEAN參數。 推薦使用int參數編寫您自己的包裝過程,或傳遞具有固定TRUE參數的PL / SQL塊:

BEGIN
   DBMS_AQADM.DROP_QUEUE_TABLE( 
      queue_table        => ?, 
      force              => TRUE); 
END;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM