binary.pgc
来自「postgresql8.3.4源码,开源数据库」· PGC 代码 · 共 86 行
PGC
86 行
#include <stdio.h>#include <stdlib.h>EXEC SQL include ../regression;EXEC SQL BEGIN DECLARE SECTION;struct TBempl{ long idnum; char name[21]; short accs; char byte[20];};EXEC SQL END DECLARE SECTION;intmain (void){ EXEC SQL BEGIN DECLARE SECTION; struct TBempl empl; char *data = "\\001\\155\\000\\212"; EXEC SQL END DECLARE SECTION; int i; ECPGdebug (1, stderr); empl.idnum = 1; EXEC SQL connect to REGRESSDB1; if (sqlca.sqlcode) { printf ("connect error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } EXEC SQL create table empl (idnum integer, name char (20), accs smallint, byte bytea); if (sqlca.sqlcode) { printf ("create error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } EXEC SQL insert into empl values (1, 'first user', 320, :data); if (sqlca.sqlcode) { printf ("insert error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } EXEC SQL DECLARE C CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum; EXEC SQL OPEN C; EXEC SQL FETCH C INTO:empl.name,:empl.accs,:empl.byte; if (sqlca.sqlcode) { printf ("fetch error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte); memset(empl.name, 0, 21L); memset(empl.byte, '#', 20L); EXEC SQL DECLARE B BINARY CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum; EXEC SQL OPEN B; EXEC SQL FETCH B INTO :empl.name,:empl.accs,:empl.byte; if (sqlca.sqlcode) { printf ("fetch error = %ld\n", sqlca.sqlcode); exit (sqlca.sqlcode); } EXEC SQL CLOSE B; /* do not print a.accs because big/little endian will have different outputs here */ printf ("name=%s, byte=", empl.name); for (i=0; i<20; i++) { if (empl.byte[i] == '#') break; printf("(%o)", (unsigned char)empl.byte[i]); } printf("\n"); EXEC SQL disconnect; exit (0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?