sql - 是否有任何 RDBMS 提供预准备语句的功能?
问题描述
我在 Java 中学习了 JDBC 中准备好的语句的概念。所以我认为prepared statement是JDBC中的一个概念,而不是RDBMS中的一个概念。
为了看看我的猜测是否正确,请问是否有任何主要的 RDBMS 在它们的类似 PL/PSM 的语言中提供准备语句的功能,例如 PL/SQL、PL/pgSQL、MySQL、Transact-SQL?
如果有任何这样的 RDBMS,是否在 SQL 或类似 PL/PSM 的语言(如 PL/SQL、PL/pgSQL、MySQL、Transact-SQL)中提供了准备好的语句?
我读了存储过程和准备好的语句之间的区别..?,但是我找不到哪个提供准备语句的功能,虽然我认为准备语句是JDBC中的一个概念,而不是RDBMS中的一个概念,而存储过程只是RDBMS中的一个概念。
解决方案
符合 SQL 的 RDBMS 的每个实现都应支持用于服务器端预准备语句的 API。我想不出一个不支持准备好的语句的 RDBMS。
JDBC 有一个 PreparedStatement 类。每个品牌的 JDBC 驱动程序的实现都不同,但我使用的所有这些都只是委托给 RDBMS API。JDBC 驱动程序将 SQL 查询字符串发送到数据库服务器,并且 SQL 可能包含例如参数占位符?
(某些品牌 - 如 Oracle - 支持命名参数)。
一些数据库实现提供了可用于执行准备好的语句的包或函数,因此您可以在运行时在存储过程中创建查询。
- 甲骨文:https ://docs.oracle.com/cd/A57673_01/DOC/api/doc/PAD18/ch8.htm
- Microsoft SQL Server:https ://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-prepare-transact-sql?view=sql-server-2017
一些数据库实现还支持可以作为查询调用的语句PREPARE
。EXECUTE
这允许您在存储过程或 SQL 脚本中使用准备好的语句。
推荐阅读
- python - 是否可以使用 Google Cloud Storage 创建自定义频道?
- html - 表格行中文本的对齐方式
- java - 验证数据是否已存在于 firebase
- javascript - 覆盖 Number.toLocaleString("fa-IR") 并更改波斯数字的千位分隔符
- javascript - bcrypt npm 安装错误 - 错误:找不到模块 node-pre-gyp\bin\node-pre-gyp
- verilog - 我是 Verilog 的新手,如果无法合成初始块,那么如何在不重置的情况下初始化寄存器,请有人解释
- c# - 从 .NET C# 访问 LinkedIn API V2
- json - 如何在 JSON 文件中翻译 Laravel 的默认验证错误?
- python - 使用 plotly 和 geojson 文件绘制地图
- neo4j - 基于本体的 Neo4J 动态 Spring 数据类