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