2

数据库是甲骨文。

我想Connection.setAutoCommit用于SQL存储过程和函数。它会起作用吗?

对于我使用的调用程序CallableStatement

4

3 回答 3

0

它不起作用,connection.setAutoCommit(true),在这个连接中是一个 Java 对象。您不能在存储过程中使用相同的。

我们有一个名为 autocommit 的 sql 系统变量,如果我们在编写存储过程时将其设置为 on,那么您的过程将自动提交您尝试执行的结果。

于 2012-07-10T11:35:25.207 回答
0

是的,它有效。实际上自动提交是默认开启的。本章将为您提供一个想法,但可以节省您一些时间:

默认情况下,JDBC 的自动提交功能是开启的,这意味着每条 SQL 语句在执行时都会被提交。如果您的程序执行了多个 SQL 语句,则可以通过关闭自动提交来实现小幅性能提升。

也阅读 CallableStatement 部分:

您可能还记得,CallableStatement 对象用于执行数据库存储过程。我将 CallableStatement 对象保存到最后,因为它们是所有 JDBC SQL 执行接口中执行最慢的对象。这听起来可能违反直觉,因为通常认为调用存储过程比使用 SQL 更快,但事实并非如此。给定一个简单的 SQL 语句和一个完成相同任务的存储过程调用,简单的 SQL 语句总是执行得更快。为什么?因为使用存储过程,您不仅有执行 SQL 语句所需的时间,还有处理过程调用本身的开销所需的时间。

我认为它将帮助您做出有关应用程序性能的决定。

于 2012-07-10T11:37:14.450 回答
-1

一句话:是的。只要确保您没有在存储过程中嵌入事务逻辑即可。把它全部交给 JDBC 驱动程序或事务管理器。

没有什么比亲自尝试并看到更好的了。我认为这比在这里提问还要好。

于 2012-07-10T11:34:00.387 回答