我在調用Java中的Oracle存儲過程時遇到問題。我添加了一個存儲過程到數據庫這樣的:無法在java中調用Oracle存儲過程
String SQL = "CREATE OR REPLACE PROCEDURE LIVERESULTS() " +
"IS " +
"BEGIN" +
" SELECT POOL_ID, POOL_MBR_ID, BSLN_CD, PGE_TYP_NM, SERV_NM, CL_FILE_NM" +
" FROM LBMADM.TPPO_MSTR_MAP " +
" ORDER BY SERV_NM" +
" WHERE PGE_TYP_NM = 'live' ; " +
"END";
stmtLIVE = con.createStatement();
stmtLIVE.executeUpdate(SQL);
而現在我想這樣稱呼它:
CallableStatement cs;
try {
cs = con.prepareCall("{call LIVERESULTS() }");
rs = cs.executeQuery();
while (rs.next()) {
.....
不過,我發現了以下錯誤:
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00905: object UT9J.GENERATE_SQL_FOR_LIVE is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我不能完全弄清楚我要去哪裏錯了。我閱讀了Oracle的文檔,我相信我做的都對,但我猜不。如果任何人都能看到這種情況,我會非常感激。
您創建proc'LIVE'並調用'LIVERESULTS' –
@JustYo:沒有錯誤是非常具體的(和OP應該谷歌ORA-nnn看它是什麼)。這是一個通用的*語法*錯誤,表明ORA甚至從來沒有調用錯誤的過程。它不能爲「live()」生成必要的SQL - 例如PLS-00905 - 因爲程序def的「LINE 1」缺少必需的IS關鍵字(例如,語法錯誤ORA-06550)。 – alphazero
我其實有IS,還有正確匹配的LIVERESULTS(我把它複製錯了)。我用Google搜索了它,但我仍然有點卡住。 – thomascirca