“prepared-statement”是一个存储过程吗? 从这个链接似乎不是。 Comparison with prepared statements 从这个链接似乎是。 JDBC introduction
(ctrl + f存储过程,用于在第二个链接中查找与存储过程相关的位)
在后一个链接中,他们在官方oracle网页中显示的代码示例是一个预准备语句,而不是可调用语句,因为我认为它对应于存储过程。
答案 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语句而无需先编译它。