PostgreSQL和SQL中的预处理语句是否被认为是动态SQL?

时间:2018-06-14 03:21:29

标签: mysql sql sql-server postgresql dynamic-sql

OracleSQL ServerMySQL中的预备语句是从字符串创建的,因此似乎是动态SQL。

另一方面,预编译语句不是从字符串in PostgreSQLSQL创建的。 那么PostgreSQL和SQL中的预处理语句是否被认为是动态SQL?

PostgreSQL中的预处理语句与MySQL,SQL Server和Oracle数据库中的预处理语句具有相同的概念吗?

我认为准备好的语句被定义为从字符串创建,因此必须属于动态SQL并且必须防止SQL注入。那么在PostgreSQL中没有实际准备好的语句是正确的吗?

来自Does any RDBMS provide the feature of prepared statements?

1 个答案:

答案 0 :(得分:3)

不,PostgreSQL中的预处理语句不是动态的。

如果你想在PostgreSQL中使用动态SQL,那么只能在PL / pgSQL中使用EXECUTE来完成。它与预处理语句有一个共同点,它能够以一种安全的SQL注入方式绑定值。

因此,如果您对计划的缓存以及预处理语句的一般性能提升不感兴趣,而是预防SQL注入并希望拥有动态SQL,那么就可以了。