当使用 USING SQL DESCRIPTOR 或 INTO 子句时,DESCRIBE 语句提供有关集合变量的信息。在打开 Select 或 Insert 游标之后,必须发出 DESCRIBE 语句,因为 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';