variable.pgc

来自「postgresql8.3.4源码,开源数据库」· PGC 代码 · 共 101 行

PGC
101
字号
#include <stdlib.h>#include <string.h>exec sql include ../regression;exec sql whenever sqlerror stop;exec sql type c is char reference;typedef char* c;exec sql type ind is union { int integer; short smallint; };typedef union { int integer; short smallint; } ind;#define BUFFERSIZ 8exec sql type str is varchar[BUFFERSIZ];exec sql declare cur cursor for       select name, born, age, married, children from family;intmain (void){	exec sql struct birthinfo { long born; short age; };exec sql begin declare section;	struct personal_struct	{	str name;					struct birthinfo birth;				} personal, *p;	struct personal_indicator {	int ind_name;					struct birthinfo ind_birth;				  } ind_personal, *i;	ind ind_children;exec sql end declare section;	exec sql char *married = NULL;	exec sql long ind_married;	exec sql ind children;	char msg[128];        ECPGdebug(1, stderr);	strcpy(msg, "connect");	exec sql connect to REGRESSDB1;	strcpy(msg, "set");	exec sql set datestyle to iso;	strcpy(msg, "create");	exec sql create table family(name char(8), born integer, age smallint, married date, children integer);	strcpy(msg, "insert");	exec sql insert into family(name, married, children) values ('Mum', '19870714', 3);	exec sql insert into family(name, born, married, children) values ('Dad', '19610721', '19870714', 3);	exec sql insert into family(name, age) values ('Child 1', 16);	exec sql insert into family(name, age) values ('Child 2', 14);	exec sql insert into family(name, age) values ('Child 3', 9);	strcpy(msg, "commit");	exec sql commit;	strcpy(msg, "open");	exec sql open cur;	exec sql whenever not found do break;	p=&personal;	i=&ind_personal;	memset(i, 0, sizeof(ind_personal));	while (1) {		strcpy(msg, "fetch");		exec sql fetch cur into :p:i, :married:ind_married, :children.integer:ind_children.smallint;		printf("%8.8s", personal.name.arr);		if (i->ind_birth.born >= 0)			printf(", born %ld", personal.birth.born);		if (i->ind_birth.age >= 0)			printf(", age = %d", personal.birth.age);		if (ind_married >= 0)			printf(", married %s", married);		if (ind_children.smallint >= 0)			printf(", children = %d", children.integer);		putchar('\n');		free(married);		married = NULL;	}	strcpy(msg, "close");	exec sql close cur;	strcpy(msg, "drop");	exec sql drop table family;	strcpy(msg, "commit");	exec sql commit;	strcpy(msg, "disconnect"); 	exec sql disconnect;	return (0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?