当使用 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';