“准备好的声明”是一个存储过程吗?

时间:2013-09-04 13:23:14

标签: java stored-procedures jdbc prepared-statement callable-statement

“prepared-statement”是一个存储过程吗? 从这个链接似乎不是。 Comparison with prepared statements 从这个链接似乎是。 JDBC introduction

(ctrl + f存储过程,用于在第二个链接中查找与存储过程相关的位)

在后一个链接中,他们在官方oracle网页中显示的代码示例是一个预准备语句,而不是可调用语句,因为我认为它对应于存储过程。

2 个答案:

答案 0 :(得分:1)

您是对的,该教程中引用的代码不会调用存储过程。目的是传达这个用Java编写的存储过程:

  

最新一代数据库产品允许使用Java编程语言和JDBC API编写存储过程。

     

以下代码是如何使用Java编程语言创建一个非常简单的存储过程的示例。请注意,存储过程只是一个包含普通JDBC代码的静态Java方法。它接受两个输入参数,并使用它们来更改员工的车号。

(强调我的)

例如,Oracle支持Java存储过程,本教程中的示例是如何使用Java实现该存储过程。在我看来,这是非常令人困惑的,因为你不是如何从Java调用存储过程的,并且这不应该是这种形式的JDBC教程的一部分。

要明确:PreparedStatement本身不是存储过程,但它可用于调用(执行)存储过程(同样适用于Statement),{{1}只是有更多适合执行存储过程的功能。

在本教程中,Java存储过程使用CallableStatement作为执行该Java存储过程的一部分来执行查询。遗憾的是,本教程通过讨论这个高级主题来解决这个问题,而没有讨论执行存储过程的正常任务。

答案 1 :(得分:0)

PreparedStatement不是存储过程。它可以是任何类型的SQL语句。

  

这样做的好处是,在大多数情况下,此SQL语句会立即发送到DBMS,并在其中进行编译。因此,PreparedStatement对象不仅包含SQL语句,还包含已预编译的SQL语句。这意味着当执行PreparedStatement时,DBMS可以只运行PreparedStatement SQL语句而无需先编译它。