execute.pgc

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

PGC
95
字号
#include <stdlib.h>#include <string.h>#include <stdlib.h>#include <stdio.h>exec sql include ../regression;exec sql whenever sqlerror sqlprint;intmain(void){exec sql begin declare section;	int amount[8];	int increment=100;	char name[8][8];	char letter[8][1];	char command[128];exec sql end declare section;	int i,j;	ECPGdebug(1, stderr);	exec sql connect to REGRESSDB1 as main;	exec sql create table test (name char(8), amount int, letter char(1));	exec sql commit;	sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 1, 'f')");	exec sql execute immediate :command;	sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 2, 't')");	exec sql execute immediate :command;	sprintf(command, "insert into test (name, amount, letter) select name, amount+10, letter from test");	exec sql execute immediate :command;	printf("Inserted %ld tuples via execute immediate\n", sqlca.sqlerrd[2]);	sprintf(command, "insert into test (name, amount, letter) select name, amount+$1, letter from test");	exec sql prepare I from :command;	exec sql execute I using :increment;	printf("Inserted %ld tuples via prepared execute\n", sqlca.sqlerrd[2]);	exec sql commit;	sprintf (command, "select * from test");	exec sql prepare f from :command;	exec sql declare CUR cursor for f;	exec sql open CUR;	exec sql fetch 8 in CUR into :name, :amount, :letter;	for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)	{		exec sql begin declare section;		char n[8], l = letter[i][0];		int a = amount[i];		exec sql end declare section;		strncpy(n, name[i], 8);		printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);	}	exec sql close CUR;	exec sql deallocate f;	sprintf (command, "select * from test where amount = $1");	exec sql prepare f from :command;	exec sql declare CUR2 cursor for f;	exec sql open CUR2 using 1;	exec sql fetch in CUR2 into :name, :amount, :letter;	for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)	{		exec sql begin declare section;		char n[8], l = letter[i][0];		int a = amount[i];		exec sql end declare section;		strncpy(n, name[i], 8);		printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);	}	exec sql close CUR2;	exec sql drop table test;	exec sql commit;	exec sql disconnect;	return (0);}

⌨️ 快捷键说明

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