Help Center/
GaussDB/
Developer Guide(Distributed_8.x)/
Application Development Guide/
ECPG-based Development/
Running SQL Commands/
Embedded SQL Commands/
WHENEVER
Updated on 2024-06-03 GMT+08:00
WHENEVER
Description
Defines a behavior that is called when an SQL execution exception occurs (row not found, SQL alarm, or error).
Syntax
WHENEVER { NOT FOUND | SQLERROR | SQLWARNING } action
Parameters
For details about the parameter description, see Setting Callbacks.
Examples
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;
Use WHENEVER NOT FOUND BREAK to process the loop of the result set. The following is a complete example:
#include <stdlib.h> #include <string.h> #include <stdio.h> int main(void) { EXEC SQL CONNECT TO testdb AS con1; EXEC SQL ALLOCATE DESCRIPTOR d; EXEC SQL DECLARE cur CURSOR FOR SELECT current_database(), 'hoge', 256; EXEC SQL OPEN cur; EXEC SQL BEGIN DECLARE SECTION; char* d1; char* d2; EXEC SQL END DECLARE SECTION; /* When the end of the result set is reached, exit the loop. */ EXEC SQL WHENEVER NOT FOUND DO BREAK; while (1) { EXEC SQL FETCH NEXT FROM cur INTO SQL DESCRIPTOR d; exec sql get descriptor d value 1 :d1=DATA; exec sql get descriptor d value 2 :d2=DATA; printf("d1 is %s,%s\n", d1, d2) ; } EXEC SQL CLOSE cur; EXEC SQL COMMIT; EXEC SQL DEALLOCATE DESCRIPTOR d; EXEC SQL DISCONNECT ALL; return 0; }
Parent topic: Embedded SQL Commands
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
The system is busy. Please try again later.
For any further questions, feel free to contact us through the chatbot.
Chatbot