compat_informix-test_informix2.c
来自「postgresql8.3.4源码,开源数据库」· C语言 代码 · 共 294 行
C
294 行
/* Processed by ecpg (regression mode) *//* These include files are added by the preprocessor */#include <ecpgtype.h>#include <ecpglib.h>#include <ecpgerrno.h>#include <sqlca.h>/* Needed for informix compatibility */#include <ecpg_informix.h>/* End of automatic include section */#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))#line 1 "test_informix2.pgc"#include <stdio.h>#include <stdlib.h>#include "sqltypes.h"#line 1 "sqlca.h"#ifndef POSTGRES_SQLCA_H#define POSTGRES_SQLCA_H#ifndef PGDLLIMPORT#if defined(WIN32) || defined(__CYGWIN__)#define PGDLLIMPORT __declspec (dllimport)#else#define PGDLLIMPORT#endif /* __CYGWIN__ */#endif /* PGDLLIMPORT */#define SQLERRMC_LEN 150#ifdef __cplusplusextern "C"{#endifstruct sqlca_t{ char sqlcaid[8]; long sqlabc; long sqlcode; struct { int sqlerrml; char sqlerrmc[SQLERRMC_LEN]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; /* Element 0: empty */ /* 1: OID of processed tuple if applicable */ /* 2: number of rows processed */ /* after an INSERT, UPDATE or */ /* DELETE statement */ /* 3: empty */ /* 4: empty */ /* 5: empty */ char sqlwarn[8]; /* Element 0: set to 'W' if at least one other is 'W' */ /* 1: if 'W' at least one character string */ /* value was truncated when it was */ /* stored into a host variable. */ /* * 2: if 'W' a (hopefully) non-fatal notice occurred */ /* 3: empty */ /* 4: empty */ /* 5: empty */ /* 6: empty */ /* 7: empty */ char sqlstate[5];};struct sqlca_t *ECPGget_sqlca(void);#ifndef POSTGRES_ECPG_INTERNAL#define sqlca (*ECPGget_sqlca())#endif#ifdef __cplusplus}#endif#endif#line 5 "test_informix2.pgc"#line 1 "regression.h"#line 6 "test_informix2.pgc"/* Check SQLCODE, and produce a "standard error" if it's wrong! */static void sql_check(char *fn, char *caller, int ignore){ char errorstring[255]; if (SQLCODE == ignore) return; else { if (SQLCODE != 0) { sprintf(errorstring, "**SQL error %ld doing '%s' in function '%s'. [%s]", SQLCODE, caller, fn, sqlca.sqlerrm.sqlerrmc); fprintf(stderr, "%s", errorstring); printf("%s\n", errorstring); /* attempt a ROLLBACK */ { ECPGtrans(__LINE__, NULL, "rollback");}#line 27 "test_informix2.pgc" if (SQLCODE == 0) { sprintf(errorstring, "Rollback successful.\n"); } else { sprintf(errorstring, "Rollback failed with code %ld.\n", SQLCODE); } fprintf(stderr, "%s", errorstring); printf("%s\n", errorstring); exit(1); } }}int main(void){ /* exec sql begin declare section */ #line 49 "test_informix2.pgc" int c ; #line 50 "test_informix2.pgc" timestamp d ; #line 51 "test_informix2.pgc" timestamp e ; #line 52 "test_informix2.pgc" timestamp maxd ; #line 53 "test_informix2.pgc" char dbname [ 30 ] ;/* exec sql end declare section */#line 54 "test_informix2.pgc" interval *intvl; /* exec sql whenever sqlerror sqlprint ; */#line 58 "test_informix2.pgc" ECPGdebug(1, stderr); strcpy(dbname, "regress1"); { ECPGconnect(__LINE__, 1, dbname , NULL, NULL , NULL, 0); #line 63 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 63 "test_informix2.pgc" sql_check("main", "connect", 0); { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "set DateStyle to 'DMY'", ECPGt_EOIT, ECPGt_EORT);#line 66 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 66 "test_informix2.pgc" { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "create table history ( customerid integer , timestamp timestamp without time zone , action_taken char ( 5 ) , narrative varchar ( 100 ) ) ", ECPGt_EOIT, ECPGt_EORT);#line 68 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 68 "test_informix2.pgc" sql_check("main", "create", 0); { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into history ( customerid , timestamp , action_taken , narrative ) values ( 1 , '2003-05-07 13:28:34 CEST' , 'test' , 'test' ) ", ECPGt_EOIT, ECPGt_EORT);#line 73 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 73 "test_informix2.pgc" sql_check("main", "insert", 0); { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select max ( timestamp ) from history ", ECPGt_EOIT, ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);#line 78 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 78 "test_informix2.pgc" sql_check("main", "select max", 100); { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "select customerid , timestamp from history where timestamp = $1 limit 1 ", ECPGt_timestamp,&(maxd),(long)1,(long)1,sizeof(timestamp), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(c),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_timestamp,&(d),(long)1,(long)1,sizeof(timestamp), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);#line 85 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 85 "test_informix2.pgc" sql_check("main", "select", 0); printf("Read in customer %d\n", c); intvl = PGTYPESinterval_from_asc("1 day 2 hours 24 minutes 65 seconds", NULL); PGTYPEStimestamp_add_interval(&d, intvl, &e); free(intvl); c++; { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into history ( customerid , timestamp , action_taken , narrative ) values ( $1 , $2 , 'test' , 'test' ) ", ECPGt_int,&(c),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_timestamp,&(e),(long)1,(long)1,sizeof(timestamp), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);#line 97 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 97 "test_informix2.pgc" sql_check("main", "update", 0); { ECPGtrans(__LINE__, NULL, "commit");#line 100 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 100 "test_informix2.pgc" { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "drop table history ", ECPGt_EOIT, ECPGt_EORT);#line 102 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 102 "test_informix2.pgc" sql_check("main", "drop", 0); { ECPGtrans(__LINE__, NULL, "commit");#line 105 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 105 "test_informix2.pgc" { ECPGdisconnect(__LINE__, "CURRENT");#line 107 "test_informix2.pgc"if (sqlca.sqlcode < 0) sqlprint();}#line 107 "test_informix2.pgc" sql_check("main", "disconnect", 0); printf("All OK!\n"); exit(0);/* Table "public.history" Column | Type | Modifiers--------------+-----------------------------+----------- customerid | integer | not null timestamp | timestamp without time zone | not null action_taken | character(5) | not null narrative | character varying(100) |*/}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?