下图显示了将 catalog 表中的 cat_descr TEXT 列选择到内存中的代码片段, 然后显示 它。
图 2. getcd_me 示例程序代码片段
cat_descr.loc_loctype = LOCMEMORY; /* set loctype for in memory */
GBase 8s ESQL/C 编程指南 南大通用数据技术股份有限公司 - 143 -
cat_descr.loc_bufsize = -1; /* let db get buffer */ cat_descr.loc_oflags = 0; /* clear loc_oflags */ cat_descr.loc_mflags = 0; /* set loc_mflags to 0 */ EXEC SQL select catalog_num, cat_descr /* look up catalog number */ into :cat_num, :cat_descr from catalog where catalog_num = :cat_num; if((ret = exp_chk2("SELECT", WARNNOTIFY)) == 100) /* if not found */ { printf("\nCatalog number %ld not found in catalog table\n", cat_num); if(!more_to_do()) /* More to do? */ break; /* no, terminate loop */ else continue; /* yes */ } if(ret < 0) { printf("\nSelect for catalog number %ld failed\n", cat_num); EXEC SQL disconnect current; printf("GETCD_ME Sample Program over.\n\n"); exit(1); } prdesc(); /* if found, print cat_descr */
This program requires you to enter a catalog number from the catalog table. For example: '10001'. It then displays the content of the cat_descr column for that catalog row. The cat_descr value is stored in memory.
Enter a catalog number: 10004 Description for 10004:
Jackie Robinson signature glove. Highest professional quality, used by National League.
char name[20]; loc_t photo; EXEC SQL END DECLARE SECTION;
photo.loc_loctype = LOCMEMORY; /* Photo resides in memory */ photo.loc_buffer = photo_buf; /* pointer to where it is */ photo.loc_size = BUFFSZ - 1; /* length of image*/
EXEC SQL insert into employee (name, badge_pic) values (:name, :photo);