📄 accses.c
字号:
/* Result Sets Interface */
#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned int magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
/* Thread Safety */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
/* Object support */
struct sqltvn
{
unsigned char *tvnvsn;
unsigned short tvnvsnl;
unsigned char *tvnnm;
unsigned short tvnnml;
unsigned char *tvnsnm;
unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;
struct sqladts
{
unsigned int adtvsn;
unsigned short adtmode;
unsigned short adtnum;
sqltvn adttvn[1];
};
typedef struct sqladts sqladts;
static struct sqladts sqladt = {
1,1,0,
};
/* Binding to PL/SQL Records */
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
/* File name & Package Name */
struct sqlcxp
{
unsigned short fillen;
char filnam[10];
};
static struct sqlcxp sqlfpn =
{
9,
"accses.pc"
};
static unsigned int sqlctx = 34339;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int occurs;
short *cud;
unsigned char *sqlest;
char *stmt;
sqladts *sqladtp;
sqltdss *sqltdsp;
void **sqphsv;
unsigned int *sqphsl;
int *sqphss;
void **sqpind;
int *sqpins;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned short *sqpadto;
unsigned short *sqptdso;
unsigned int sqlcmax;
unsigned int sqlcmin;
unsigned int sqlcincr;
unsigned int sqlctimeout;
unsigned int sqlcnowait;
int sqfoff;
unsigned int sqcmod;
unsigned int sqfmod;
void *sqhstv[4];
unsigned int sqhstl[4];
int sqhsts[4];
void *sqindv[4];
int sqinds[4];
unsigned int sqharm[4];
unsigned int *sqharc[4];
unsigned short sqadto[4];
unsigned short sqtdso[4];
} sqlstm = {12,4};
/* SQLLIB Prototypes */
extern sqlcxt (/*_ void **, unsigned int *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlcx2t(/*_ void **, unsigned int *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlbuft(/*_ void **, char * _*/);
extern sqlgs2t(/*_ void **, char * _*/);
extern sqlorat(/*_ void **, unsigned int *, void * _*/);
/* Forms Interface */
static int IAPSUCC = 0;
static int IAPFAIL = 1403;
static int IAPFTL = 535;
extern void sqliem(/*_ char *, int * _*/);
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
/* CUD (Compilation Unit Data) Array */
static short sqlcud0[] =
{12,4130,852,0,0,
5,0,0,1,0,0,27,38,0,0,4,4,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0,1,10,0,0,
36,0,0,2,88,0,6,48,0,0,4,4,0,1,0,1,97,0,0,1,68,0,0,2,68,0,0,2,3,0,0,
67,0,0,3,89,0,6,57,0,0,4,4,0,1,0,1,97,0,0,1,68,0,0,2,68,0,0,2,3,0,0,
98,0,0,4,74,0,6,66,0,0,3,3,0,1,0,1,97,0,0,2,68,0,0,2,3,0,0,
};
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
#pragma pack (push,1)
char accses(short int opertype,unsigned char *contractid,unsigned int currencyend,unsigned int *accountbalance);
int main()
{
int oper_type=5;
unsigned char contract_id[20]="0000005147896900";
unsigned int currency=10000;
char resp_type=88;
unsigned int accountbalance=88;
printf("+++++++++++:%d\n",accountbalance);
printf("+++++++++++:%d\n",resp_type);
resp_type=accses(oper_type,contract_id,currency,&accountbalance);
printf("+++++++++++:%d\n",accountbalance);
printf("+++++++++++:%d\n",resp_type);
}
char accses(short int opertype,unsigned char *contractid,unsigned int currencyend,unsigned int *accountbalance)
{
/* exec sql begin declare section; */
/*连接数据库的变量*/
unsigned char phonenum[21]="###"; /*用户的号线*/
unsigned char username[10]="djm1";/*连接的数据库名*/
unsigned char passwd[30]="djm1"; /*连接的数据库密码*/
unsigned char server[100]="myoracle"; /*连接数据库的服务名*/
unsigned char contract_id[21]="";
unsigned int currency=0;
unsigned int account_balance=0;
int resp_type=0;
/* exec sql end declare section; */
memcpy(&contract_id,contractid,20);
currency=currencyend;
//account_balance=*accountbalance;
/* EXEC SQL DECLARE DB2 DATABASE; */
/* EXEC SQL AT DB2 CONNECT :username IDENTIFIED BY :passwd
USING :server; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )10;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)username;
sqlstm.sqhstl[0] = (unsigned int )10;
sqlstm.sqhsts[0] = ( int )10;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)passwd;
sqlstm.sqhstl[1] = (unsigned int )30;
sqlstm.sqhsts[1] = ( int )30;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)server;
sqlstm.sqhstl[2] = (unsigned int )100;
sqlstm.sqhsts[2] = ( int )100;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -