在 SELECT 或 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)省略 INTO 子句时,在访存行时必须指定数据目标。
例如,要动态地执行 SELECT 或 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句,SELECT 或 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)不可在 PREPARE 语句中包括其 INTO 子句。因此,FETCH 语句必须包括 INTO 子句来将数据检索到一组变量内。这种方法让您在不同的内存位置中存储不同的行。
EXEC SQL BEGIN DECLARE SECTION;
char wanted_state[2];
short int row_count = 0;
struct customer_t{
{
int c_no;
char fname[15];
char lname[15];
} cust_rec[100];
EXEC SQL END DECLARE SECTION;
main()
{
EXEC SQL connect to'stores_demo';
printf("Enter 2-letter state code: ");
scanf ("%s", wanted_state);
EXEC SQL declare cust cursor for
select * from customer where state = :wanted_state;
EXEC SQL open cust;
EXEC SQL fetch cust into :cust_rec[row_count];
while (SQLCODE == 0)
{
printf("\n%s %s", cust_rec[row_count].fname,
cust_rec[row_count].lname);
row_count++;
EXEC SQL fetch cust into :cust_rec[row_count];
}
printf ("\n");
EXEC SQL close cust;
EXEC SQL free cust;
}