次のプログラムでは、スクロール可能カーソルとFETCH文で使用される様々なオプションの使用方法を示します。
#include <stdio.h> /* declare host variables */ char userid[12]="SCOTT/TIGER"; char emp_name[10]; void sql_error(); /* include the SQL Communications Area */ #include<sqlca.h> main() { /* handle errors */ EXEC SQL WHENEVER SQLERROR do sql_error("Oracle error"); /* connect to Oracle */ EXEC SQL CONNECT :userid; printf("Connected.\n"); /* declare a scrollable cursor */ EXEC SQL DECLARE emp_cursor SCROLL CURSOR FOR SELECT ename FROM emp; /* open the cursor and identify the active set */ EXEC SQL OPEN emp_cursor; /* Fetch the last row */ EXEC SQL FETCH LAST emp_cursor INTO :emp_name; /* Fetch row number 5 */ EXEC SQL FETCH ABSOLUTE 5 emp_cursor INTO :emp_name; /* Fetch row number 10 */ EXEC SQL FETCH RELATIVE 5 emp_cursor INTO :emp_name; /* Fetch row number 7 */ EXEC SQl FETCH RELATIVE -3 emp_cursor INTO :emp_name; /* Fetch the first row */ EXEC SQL FETCH FIRST emp_cursor INTO :emp_name; /* Fetch row number 2*/ EXEC SQL FETCH my_cursor INTO :emp_name; /* Fetch row number 3 */ EXEC SQL FETCH NEXT my_cursor INTO :emp_name; /* Fetch row number 3 */ EXEC SQL FETCH CURRENT my_cursor INTO :emp_name; /* Fetch row number 2 */ EXEC SQL FETCH PRIOR my_cursor INTO :emp_name; } void sql_error(msg) char *msg; { char buf[500]; int buflen , msglen; EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL ROLLBACK TRANSACTION; buflen = sizeof (buf); sqlglm(buf, &buflen, &mesglen); printf("%s\n",msg); printf("%*.s\n",msglen,buf); exit(1); }