【问题标题】:Is "prepared-statement" a stored procedure?“prepared-statement”是存储过程吗?
【发布时间】:2013-09-04 13:23:13
【问题描述】:

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

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

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

【问题讨论】:

  • A stored procedure is a group of SQL statements that can be called by name. 您可以使用PreparedStatement 进行设置。

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


【解决方案1】:

您是对的,该教程中引用的代码没有调用存储过程。其目的是传达此用 Java 编写的存储过程:

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

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

(强调我的)

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

要明确:PreparedStatement 本身不是存储过程,但它可以用来调用(执行)存储过程(Statement 也是如此),CallableStatement 只是具有更多的功能适合执行存储过程。

在本教程中,Java 存储过程使用PreparedStatement 来执行查询,作为该 Java 存储过程执行的一部分。不幸的是,本教程通过讨论这个高级主题而没有讨论执行存储过程的正常任务,从而混淆了这个问题。

【讨论】:

  • 感谢您的回复,您对 Sotirios Delimanolis 对我的问题的评论有何看法?
  • 您可以使用PreparedStatement(或Statement)调用存储过程,只是CallableStatement对存储过程有附加功能。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多