我在Java中学习了JDBC中预准备语句的概念。所以我认为准备好的语句是JDBC中的一个概念,但不是RDBMS中的概念。
为了确定我的猜测是否正确,请问是否有任何主要的RDBMS在其PL / PSM语言中提供预准备语句的功能,例如PL / SQL,PL / pgSQL,MySQL,Transact-SQL?
如果有任何这样的RDBMS,是用SQL提供的预备语句,还是PL / PSM之类的语言,如PL / SQL,PL / pgSQL,MySQL,Transact-SQL?
我读了DIfference Between Stored Procedures and Prepared Statements..?,但是我找不到哪个提供了预处理语句的功能,尽管我认为预处理语句是JDBC中的一个概念而不是RDBMS,而存储过程只是RDBMS中的一个概念。 / p>
答案 0 :(得分:3)
符合SQL的RDBMS的每个实现都应该支持服务器端预处理语句的API。我想不出一个不支持预处理语句的RDBMS。
JDBC有一个PreparedStatement类。实现因JDBC驱动程序的每个品牌而异,但我使用的所有驱动程序都只是委托给RDBMS API。 JDBC驱动程序将SQL查询字符串发送到数据库服务器,SQL可能包含参数占位符,例如?
(某些品牌 - 如Oracle - 支持命名参数)。
某些数据库实现提供了可用于执行预准备语句的包或函数,因此您可以在存储过程中的运行时创建查询。
某些数据库实现还支持可以作为查询调用的PREPARE
和EXECUTE
语句。这允许您在存储过程或SQL脚本中使用预准备语句。