PREPARE
功能描述
创建一个预备语句。
预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。只能通过显式调用DEALLOCATE进行删除,会话结束时,PREPARE也会自动删除。
注意事项
不支持创建同名的PREPARE语句。
语法格式
PREPARE name FROM string
参数说明
- name
预备查询标识符。
- string
字符串,为预备SQL语句,不支持使用用户变量@var_name,支持以下语句:
- SELECT
- INSERT
- UPDATE
- DELETE
- ALTER [SCHEMA|DATABASE]
支持修改数据库字符集字符序,不支持修改数据库所有者。
- ALTER [TABLE|VIEW|INDEX]
- ALTER USER
- CREATE TABLE
- CREATE USER
- CREATE [SCHEMA|DATABASE]
- DROP [TABLE|VIEW|INDEX|SCHEMA|DATABASE]
- DROP USER
- [GRANT|REVOKE]
- CREATE INDEX
- COMMIT
- TRUNCATE TABLE
- SET
- CREATE VIEW
示例
m_db=# PREPARE p1 FROM 'SELECT 10 < 52'; PREPARE m_db=# EXECUTE p1; ?column? ---------- t (1 row)