Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OracleCallableStatement V/S CallableStatement_Java_Oracle_Stored Procedures_Jdbc - Fatal编程技术网

Java OracleCallableStatement V/S CallableStatement

Java OracleCallableStatement V/S CallableStatement,java,oracle,stored-procedures,jdbc,Java,Oracle,Stored Procedures,Jdbc,我只是想知道OracleCallableStatement和CallableStatement在性能和有效性方面的区别。OracleCallableStatement是Oracle特有的接口,它最终扩展了标准的java.sql.CallableStatement接口 除非您需要访问该接口中的Oracle特定功能,否则不应在代码中引用它,而应仅根据CallableStatement接口编写代码。这是适用于所有JDBC代码的一般良好实践,并保持应用程序在驱动程序和数据库之间的可移植性 没有性能或有效

我只是想知道OracleCallableStatement和CallableStatement在性能和有效性方面的区别。

OracleCallableStatement
是Oracle特有的接口,它最终扩展了标准的
java.sql.CallableStatement
接口

除非您需要访问该接口中的Oracle特定功能,否则不应在代码中引用它,而应仅根据
CallableStatement
接口编写代码。这是适用于所有JDBC代码的一般良好实践,并保持应用程序在驱动程序和数据库之间的可移植性


没有性能或有效性差异-实际上使用的是相同的东西。

扩展CallableStatement,因此OracleCallableStatement也是CallableStatement。性能不会有任何差别,但如果您不需要Oracle的特殊(和非标准)功能,请继续使用CallableStatement,这将帮助您更轻松地更改数据库。顺便说一句,您会发现比后者更熟悉CallableStatement的开发人员。

当然,这只适用于您关心可移植性的情况。如果您想使用Oracle特定的扩展,该怎么办?@cagcowboy:您应该始终关注可移植性。如果Oracle重写其驱动程序并更改该接口会怎么样?不,OCS也是一个接口。如果需要使用匿名PL/SQL块。。。您可以使用OCS,否则只需使用CSS。另一个注意事项是使用连接池,一些JDBC池,具有将准备好的语句汇集在一起的功能(可调用语句也是准备好的语句)。我相信您不能将从池中获得的CallableStatement强制转换为OracleCallableStatement(通过代理主对象实现的池除外)。