如果您使用 INTO 和 USING SQL DESCRIPTOR 子句,DESCRIBE INPUT 语句提供有关集合变量的信息。
在打开 Select 或 Insert 游标后必须执行 DESCRIBE INPUT 语句。否则,DESCRIBE INPUT 无法获取有关集合变量的信息,因为它是指定要使用的集合变量的名称的 OPEN . . . USING 语句。
EXEC SQL BEGIN DECLARE SECTION; client collection a_set; int i, set_count; int element_type, element_value; EXEC SQL END DECLARE SECTION; EXEC SQL allocate collection :a_set; EXEC SQL allocate descriptor 'desc1'; EXEC SQL select set_col into :a_set from table1; EXEC SQL prepare set_id from 'select * from table(?)'; EXEC SQL declare set_curs cursor for set_id; EXEC SQL open set_curs using :a_set; EXEC SQL describe set_id using sql descriptor 'desc1';do { EXEC SQL fetch set_curs using sql descriptor 'desc1'; ... EXEC SQL get descriptor 'desc1' :set_count = count; for (i = 1; i <= set_count; i++) { EXEC SQL get descriptor 'desc1' value :i :element_type = TYPE; switch { case SQLINTEGER: EXEC SQL get descriptor 'desc1' value :i :element_value = data; ... } /* end switch */ } /* end for */ } while (SQLCODE == 0); EXEC SQL close set_curs; EXEC SQL free set_curs; EXEC SQL free set_id; EXEC SQL deallocate collection :a_set; EXEC SQL deallocate descriptor 'desc1';