2012-02-26 75 views

回答

1

OracleCallableStatement是一個Oracle特定的接口,它最終擴展了標準接口java.sql.CallableStatement

除非需要訪問該接口中特定於Oracle的功能,否則不應在代碼中引用它,而應僅將代碼寫入CallableStatement接口。這對所有JDBC代碼來說都是一個很好的實踐,並且可以讓您的應用程序在驅動程序和數據庫之間移植。

沒有性能或效率差異 - 您實際上使用的是相同的東西。

+0

當然,這隻適用於如果你關心可移植性。而如果你想使用Oracle特定的擴展? – cagcowboy 2012-02-26 17:00:27

+0

@cagcowboy:你應該總是關心可移植性。如果Oracle重寫其驅動程序並更改該接口會怎樣? – skaffman 2012-02-26 17:02:04

+0

不,OCS也是一個接口。如果你需要使用匿名的PL/SQL塊...你可以使用OCS,否則只需使用CS – 2012-02-26 17:02:15

1

OracleCallableStatement擴展了CallableStatement,所以OracleCallableStatement也是一個CallableStatement。性能完全沒有區別,但如果您不需要Oracle的特殊(和非標準)功能,請繼續使用CallableStatement,這將幫助您更輕鬆地更改數據庫。順便說一下,您會發現更多熟悉CallableStatement的開發人員比後者更熟悉。

+1

另一個需要注意的是使用連接池,一些JDBC池,有一個功能來彙集準備好的語句(並且可調用語句也是一個準備好的語句)。我相信您不能將您從池中獲得的CallableStatement轉換爲OracleCallableStatement(除了通過代理主對象實現的池之外)。 – 2012-02-26 17:06:44

相關問題