在 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; }