EDIT: Mentre alcune delle risposte in questa domanda possono aiutare gli altri con problemi diversi, la soluzione era in realtà correlata ad alcuni bug con la funzionalità di auto-commit su una connessione di database! Forzare un commit dopo aver eseguito la query ha indotto il database a riflettere le modifiche, quindi il codice mostrato di seguito È il modo corretto per chiamare una stored procedure di questo tipoJava: chiamata a una stored procedure in un database Oracle
Sto provando a chiamare una procedura memorizzata semplice in un oracolo Banca dati.
La procedura è simile al seguente:
procedure clear_orderProcDtlByOrdId(p_order_id in order_header.order_id%type,
p_transaction_id in sl_order_processing_dtl.transaction_id%type DEFAULT NULL,
p_item_action_id in sl_order_processing_dtl.item_action_id%type DEFAULT NULL)
...
il codice Java Ho problemi con un look come questo
try
{
CallableStatement storedProc = conn.prepareCall("{call PKG_PI_FRAUD.clear_orderProcDtlByOrdId(?)}");
storedProc.setString(1, orderID);
storedProc.execute();
}
catch (SQLException e)
{
e.printStackTrace();
}
Non sto ricevendo errori a tutti, ma non ci sono modifiche del database riflesse. Quando eseguo la procedura in SQL Developer, vedo i risultati. Ho pensato che potrebbe essere a causa di un problema di commit, ma la connessione che ho stabilito è in modalità auto-commit.
Qualsiasi aiuto sarebbe apprezzato!
l'ordine è impostato su VARCHAR nel DB? – PermGenError
@PremGenError orderID è un VARCHAR2 nel DB – aeros
Provare a inserire le virgolette sul parametro, quindi sulla riga 2: storedProc.setString ("1", "orderID"); – twoleggedhorse