一尘不染

Java:在oracle数据库中调用存储过程

sql

编辑:虽然此问题中的某些答案可能会帮助其他人解决不同的问题,但该解决方案实际上与数据库连接上的自动提交功能中的某些错误有关!
执行查询后强制执行提交会使数据库反映更改,因此下面显示的代码是调用此类型存储过程的正确方法

我正在尝试在oracle数据库中调用一个简单的存储过程。

该过程如下所示:

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 )
...

我遇到麻烦的Java代码如下所示

    try 
    {
        CallableStatement storedProc = conn.prepareCall("{call PKG_PI_FRAUD.clear_orderProcDtlByOrdId(?)}");
        storedProc.setString(1, orderID);
        storedProc.execute();
    } 
    catch (SQLException e) 
    {
        e.printStackTrace();
    }

我根本没有收到任何错误,但是没有反映出数据库更改。当我在SQL
Developer中运行该过程时,会看到结果。我以为可能是因为提交问题,但是我建立的连接处于自动提交模式。

任何帮助,将不胜感激!


阅读 176

收藏
2021-03-10

共1个答案

一尘不染

尽管此问题中的某些答案可能会帮助其他人解决不同的问题,但该解决方案实际上与数据库连接上具有自动提交功能的一些错误有关!执行查询后强制执行提交会使数据库反映更改,因此问题中显示的代码是调用此类型存储过程的正确方法!

2021-03-10