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 + -
显示快捷键?