当前位置: 首页 > 面试题库 >

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

秦才英
2023-03-14
问题内容

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

我正在尝试在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中运行该过程时,会看到结果。我以为可能是因为提交问题,但是我建立的连接处于自动提交模式。

任何帮助,将不胜感激!


问题答案:

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



 类似资料:
  • 我正在尝试编写一个可以返回结果的Java存储过程。我在Oracle网站上找到了这个文档,但是没有一个示例提供返回数据http://docs.oracle.com/cd/B19306_01/java.102/b14187/cheight.htm#CHDJJDGH 我创建了如下软件包: 包体如下 和 Java 代码 我使用SQLDeveloper通过以下指令调用我的过程 执行第二条指令时,我有以下错误

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 我想知道是否可以使用Spring数据JPA调用存储过程,它具有resultset和multiple out参数。 我发现了相同https://github.com/spring-projects/spring-data-examples/issues/80的Git问题 如果问题解决了,有人能举一个Spring Boot的例子吗?

  • 问题内容: 我正在处理一个查询(一个SELECT),我需要将此查询的结果插入表中。在进行插入之前,我需要做一些检查,如果所有列都有效,我将进行插入。 该检查是在存储过程中完成的。在其他地方也使用相同的过程。因此,我正在考虑使用相同的过程进行检查。 程序进行检查并插入值都可以。 我试图在SELECT内调用该过程,但是它不起作用。 这种代码不起作用。 我认为可以使用游标完成此操作,但我想避免使用游标。

  • 问题内容: 我应该做的是创建一个Java存储过程,然后再从Java程序中调用它。 我在执行JAVA程序时遇到问题-带有1个参数的JDBCPiemers(如下)(我需要弄清楚String Nosaukums)。错误:“无效的列名”。 调用ORACLE中的过程可以正常工作。 这是我已存储在数据库中的存储过程。 我用oracle创建了以下程序包。 这是我在其中调用该过程的Java程序。但是我无法使它工作

  • 我在Oracle中有一个存储过程,如下所示。 我正在从Java调用该过程。我的密码是, 即使我正在获取记录,值也是空的。这意味着如果输出为2行,则while条件执行并打印为空。在SQL Developer中,它工作得很好。提前道谢。