printf("\nFetching row from cursor 'c'...\n"); EXEC SQL fetch c into $pa; chk("Parent FETCH"); if (sqlca.sqlcode == 0) printf("Value selected from 'c' = %d.\n", pa); printf("\n");
printf("Cleaning up...\n"); EXEC SQL close database; chk("CLOSE DATABASE"); EXEC SQL drop database aa; chk("DROP DATABASE"); EXEC SQL disconnect all; chk("DISCONNECT");
printf("\nEnding execution of parent process.\n"); printf("\nSQLDETACH Sample Program over.\n\n"); }
/* Verify that the child is not longer using the parent's connection and has not inherited the parent's connection environment. */ printf("* Trying to fetch row from cursor 'c'...\n"); EXEC SQL fetch c into $ca; chk("* Child FETCH"); if (sqlca.sqlcode == 0) printf("* Value from 'c' = %d.\n", ca);
/* startup a connection for the child, since * it doesn't have one. */ printf("\n* Establish a connection, since child doesn't have one\n"); printf("* Connecting to database 'aa'...\n");
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 942 - EXEC SQL connect to 'aa'; chk("* CONNECT"); printf("* \n"); printf("* Determining number of rows in 'tab1'...\n"); EXEC SQL select count(*) into $cnt from tab1; chk("* SELECT"); if (sqlca.sqlcode == 0) printf("* Number of entries in 'tab1' = %d.\n", cnt); printf("* \n");
printf("* Disconnecting from 'aa' database...\n"); EXEC SQL disconnect current; chk("* DISCONNECT"); printf("* \n"); printf("* Ending execution of child process.\n"); printf("*******************************\n");
exit(); }
/* wait for child process to finish */ while ((rc = wait(&status)) != pid && rc != -1);
}
chk(s) char *s; { mint msglen; char buf1[200], buf2[200];
SQLDETACH Sample ESQL Program running. Beginning execution of parent process.
Connecting to default server... CONNECT was successful
Creating database 'aa'... CREATE DATABASE was successful
Creating table 'tab1'... CREATE TABLE was successful
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 944 - Inserting 4 rows into 'tab1'... INSERT #1 was successful INSERT #2 was successful INSERT #3 was successful INSERT #4 was successful
Selecting rows from 'tab1' table... DECLARE was successful OPEN was successful
Forking child process...
********************************************** * Beginning execution of child process. * sqldetach() call returns 0. * Trying to fetch row from cursor 'c'...
* Child FETCH: SQLCODE = -404: The cursor or statement is not available.
* Establish a connection, since child doesn't have one * Connecting to database 'aa'... * CONNECT was successful * * Determining number of rows in 'tab1'... * SELECT was successful * Number of entries in 'tab1' = 4. * * Disconnecting from 'aa' database... * DISCONNECT was successful * * Ending execution of child process. **********************************************