PREPARE
是用于创建预处理语句的实用程序命令。
PREPARE
添加于 PostgreSQL 7.3。
用法
PREPARE
用于创建命名预处理语句,可以选择通过位置指定参数列表,如 $1
、$2
等。
此命令创建的预处理语句对当前会话有效,并且无法从其他会话访问。它在会话结束时自动删除,或者可以使用 DEALLOCATE
命令手动删除。在同一会话中,只能存在一个具有相同名称的预处理语句;无法通过创建具有不同参数的变体来“重载”预处理语句。
可以使用 EXECUTE
执行预处理语句。
更改历史记录
- PostgreSQL 7.3
- 添加(提交 28e82066)
示例
PREPARE
的基本用法示例
postgres=# PREPARE foo_ins (INT, TEXT) AS INSERT INTO foo VALUES ($1, $2); PREPARE postgres=# SELECT * FROM pg_prepared_statements; -[ RECORD 1 ]---+----------------------------------- name | foo_ins statement | PREPARE foo_ins (INT, TEXT) AS + | INSERT INTO foo VALUES ($1, $2); prepare_time | 2022-08-04 23:17:04.706349+09 parameter_types | {integer,text} result_types | from_sql | t generic_plans | 0 custom_plans | 0
提供的语句必须在语法上有效,并引用可见对象
postgres=# PREPARE bar_ins (INT, TEXT) AS INSERT INTO bar VALUES ($1, $2); ERROR: relation "bar" does not exist LINE 2: INSERT INTO bar VALUES ($1, $2);
尝试在已存在相同名称的预处理语句时创建预处理语句
postgres=# PREPARE foo_ins (INT) AS INSERT INTO foo VALUES ($1); ERROR: prepared statement "foo_ins" already exists
参考文献
- PostgreSQL文档: PREPARE