云数据库 GaussDB-WHENEVER:示例

时间:2023-11-01 16:18:27

示例

EXEC SQL WHENEVER NOT FOUND CONTINUE; EXEC SQL WHENEVER NOT FOUND DO BREAK; EXEC SQL WHENEVER SQLWARNING SQLPRINT; EXEC SQL WHENEVER SQLWARNING DO warn(); EXEC SQL WHENEVER SQLERROR sqlprint; EXEC SQL WHENEVER SQLERROR SQLCALL print2(); EXEC SQL WHENEVER SQLERROR DO handle_error("select"); EXEC SQL WHENEVER SQLERROR DO sqlnotice(NULL, NONO);EXEC SQL WHENEVER SQLERROR DO sqlprint(); EXEC SQL WHENEVER SQLERROR GOTO error_label; EXEC SQL WHENEVER SQLERROR STOP;
使用WHENEVER NOT FOUND BREAK来处理结果集的循环:
int main(void) {     EXEC SQL CONNECT TO testdb AS con1;     EXEC SQL SELECT pg_catalog.set_config('search_path', '', false); EXEC SQL COMMIT;     EXEC SQL ALLOCATE DESCRIPTOR d;     EXEC SQL DECLARE cur CURSOR FOR SELECT current_database(), 'hoge', 256;     EXEC SQL OPEN cur;       /* 当到达结果集末尾时,跳出循环 */     EXEC SQL WHENEVER NOT FOUND DO BREAK;     while (1)     {         EXEC SQL FETCH NEXT FROM cur INTO SQL DESCRIPTOR d;         ...     }      EXEC SQL CLOSE cur;      EXEC SQL COMMIT;      EXEC SQL DEALLOCATE DESCRIPTOR d;      EXEC SQL DISCONNECT ALL;      return 0; }
support.huaweicloud.com/centralized-devg-v3-opengauss/gaussdb-12-0235.html