DB是Oracle。Connection.setAutoCommit(true)是否适用于SQL存储过程和函数?
我想用Connection.setAutoCommit
为SQL
存储过程和函数。它会起作用吗?
对于调用过程我用CallableStatement
DB是Oracle。Connection.setAutoCommit(true)是否适用于SQL存储过程和函数?
我想用Connection.setAutoCommit
为SQL
存储过程和函数。它会起作用吗?
对于调用过程我用CallableStatement
一句话:是的。只要确保不要在存储过程中嵌入事务逻辑。把它留给JDBC驱动程序或事务管理器。
有没有像试图为自己和看到的。我认为这比在这里提问更好。
它不会工作,connection.setAutoCommit(真),在这方面是一个Java对象。您不能在存储过程中使用它。
我们有一个名为自动提交一个SQL系统变量,如果我们把它作为我们编写存储过程,你的程序将自动提交什么都你试图执行的结果。
是它的工作原理。实际上,自动提交默认为开启。这chapter会给你一个想法,但你节省一些时间:
默认情况下,JDBC的自动提交功能上,这意味着它在执行每个SQL语句被提交。如果您的程序执行了多个SQL语句,那么可以通过关闭自动提交来实现小幅度的性能提升。
阅读CallableStatement的部分太:
你可能还记得,CallableStatement的对象用于执行数据库存储过程。我将CallableStatement对象保存到最后,因为它们是所有JDBC SQL执行接口中表现最慢的。这可能听起来违反直觉,因为通常认为调用存储过程比使用SQL更快,但事实并非如此。给定一个简单的SQL语句和一个完成相同任务的存储过程调用,简单的SQL语句将始终执行得更快。为什么?因为使用存储过程,您不仅需要执行SQL语句所需的时间,还需要处理过程调用本身的开销所需的时间。
我认为它会帮助你做出有关你的应用程序性能的决定。