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