PREPARE 是一个用于创建预准备语句的实用命令。
PREPARE 在 PostgreSQL 7.3 中添加。
用法
PREPARE 用于创建一个命名的预准备语句,可选地指定参数列表,参数用位置表示,例如 $1, $2 等。
此命令创建的预准备语句对于当前会话是有效的,不能从其他会话访问。它会在会话结束时自动移除,或者可以通过 DEALLOCATE 命令手动移除。在同一会话中,只能存在一个同名的预准备语句;无法通过创建具有不同参数的变体来“重载”预准备语句。
预准备语句可以使用 EXECUTE 执行。
变更历史
- PostgreSQL 7.3
- 添加 (commit 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
