VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

预备事务

功能描述

准备执行一个语句,用于帮助当编译时间不知道该值已被传递给SQL语句,或者同一语句将使用多次。

接口原型

EXEC SQL PREPARE name  {FROM|AS} string;

参数说明

参数名 参数说明
name 预备查询标识符。
string 包含一个预备语句,SELECT,INSERT,UPDATE或者DELETE之一的文本C字符串或者宿主变量。

返回值

其他

举例说明使用接口:

  • 当使用命令PREPARE准备语句的时候,对于不知道的值, 使用占位符”?“,比如

    EXEC SQL PREPARE stmt1 FROM "SELECT oid, datname FROM pg_database WHERE oid = ?";
    
  • 如果一个语句返回单行,应用程序可以在PREPARE 执行语句之后调用EXECUTE, 使用USING子句为占位符提供实际值:

    EXEC SQL EXECUTE stmt1 INTO :dboid, :dbname USING 1;
    
  • 如果一个语句返回多行,应用程序可以使用基于预备语句声明的游标。 为了结合输入参数,必须使用USING子句打开游标:

    EXEC SQL PREPARE stmt1 FROM "SELECT oid,datname FROM pg_database WHERE oid > ?";
    EXEC SQL DECLARE foo_bar CURSOR FOR stmt1;
    /* 当结果集达到最后时,打破while循环 */
    EXEC SQL WHENEVER NOT FOUND DO BREAK;
    EXEC SQL OPEN foo_bar USING 100;
    ...
    while (1)
    {
    EXEC SQL FETCH NEXT FROM foo_bar INTO :dboid, :dbname;
    ...
    }
    EXEC SQL CLOSE foo_bar;
    
  • 当用户不再需要预备语句的时候,应该重新分配它:

    EXEC SQL DEALLOCATE PREPARE name;