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語句所需的時間,還需要處理過程調用本身的開銷所需的時間。
我認爲它會幫助你做出有關你的應用程序性能的決定。