GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 699 - 此样例程序在 demo 目录中的 ifx_cl_card.ec 文件中。 /* * Check the cardinality of the collection variable when * the data is returned from the server */
main() { exec sql begin declare section; client collection myset; exec sql end declare section; mint numelems = 0; mint isnull = 0;
exec sql allocate collection ::myset; exec sql create database newdb; exec sql create table tab (col set(int not null)); exec sql insert into tab values ("set{}"); exec sql select * into :myset from tab; if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 0) printf("collection is empty\n"); else if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 1) printf("collection is null\n"); else if ((numelems = ifx_cl_card(myset, &isnull))> 0) printf("number of elements is %d\n", numelems); else printf("error occurred\n");
exec sql update tab set col = ’set{1,2,3}’; exec sql select * into :myset from tab; if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 0) printf("collection is empty\n");
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 700 - else if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 1) printf("collection is null\n"); else if ((numelems = ifx_cl_card(myset, &isnull))> 0) printf("number of elements is %d\n", numelems); else printf("error occurred\n");
exec sql update tab set col = NULL; exec sql select * into :myset from tab; if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 0) printf("collection is empty\n"); else if ((ifx_cl_card(myset, &isnull) == 0) && isnull == 1) printf("collection is null\n"); else if ((numelems = ifx_cl_card(myset, &isnull))> 0) printf("number of elements is %d\n", numelems); else printf("error occurred\n"); } 输出 collection is empty number of elements is 3 collection is null