Pro*C Oracle 的嵌入式开发,数据库处理部分最好能提取到一个模块,按照对不同数据库表的操作分成不同的.pc文件(如 DbsInstStat.pc)。
将此模块编译成库(c文件编译时链接此库),.c文件处理库表时调用对应数据库模块(.pc)中的函数即可。
      函数事例:

DbsDef.h

#define DBS_INIT       0
#define DBS_SELECT 1
#define DBS_LOCK 2
#define DBS_UPDATE 3
#define DBS_DELETE 4
#define DBS_INSERT 5 #define DBS_CURSOR 11
#define DBS_OPEN 12
#define DBS_CLOSE 13
#define DBS_FETCH 14 #define DBS_UPDATE2 15 #define SQL_NOT_FOUND_RET(ERR_VAL) \
if( sqlca.sqlcode == ) \
{\
HtLog( ERROR , "error code [%d], reason[%s] \n", \
sqlca.sqlcode, ( char * )sqlca.sqlerrm.sqlerrmc ) ; \
strcpy( gPubStru.saBankRespCode, ERR_VAL ) ; \
return -; \
} #define SQL_ERR_RET( ) \
if( sqlca.sqlcode != ) \
{\
HtLog( ERROR , "SQL ERROR code [%d], reason[%s] \n", \
sqlca.sqlcode, ( char * )sqlca.sqlerrm.sqlerrmc ); \
strcpy( gPubStru.saBankRespCode, SQL_ERR ) ; \
return - ; \
} #define SQL_ERR_RET2( ) \
if( sqlca.sqlcode != && sqlca.sqlcode != ) \
{\
HtLog( ERROR , "SQL ERROR code [%d], reason[%s] \n", \
sqlca.sqlcode, ( char * )sqlca.sqlerrm.sqlerrmc ); \
strcpy( gPubStru.saBankRespCode, SQL_ERR ) ; \
return - ; \
}

DbsInstStat.pc

#include "public.h"
#include "errlog.h"
#include "DbsDef.h"
#include "my_sys.h" EXEC SQL INCLUDE sqlda;
EXEC SQL INCLUDE sqlca; EXEC SQL BEGIN DECLARE SECTION;
char saInstCode[ + ];
char saInstHsmIndex [ + ];
char saInstPrimKey [ + ];
char saInstPinKey [ + ];
char saInstMacKey [ + ];
char saInstStat [ + ];
EXEC SQL END DECLARE SECTION; int DbsTblInstStat (int nOpr)
{
/***********
* 参数初始化
************/
memset (saInstCode, 0x00, sizeof(saInstCode));
memset (saInstHsmIndex, 0x00, sizeof(saInstHsmIndex));
memset (saInstPrimKey, 0x00, sizeof(saInstPrimKey));
memset (saInstPinKey, 0x00, sizeof(saInstPinKey));
memset (saInstMacKey, 0x00, sizeof(saInstMacKey));
memset (saInstStat, 0x00, sizeof(saInstStat)); memcpy (saInstCode, gPubStru.saFwdInstIdCode, );
trimspace (saInstCode); /***********
* 数据处理
************/
switch (nOpr)
{
case DBS_SELECT:
EXEC SQL
SELECT INST_HSM_INDEX, INST_PRIM_KEY, nvl(INST_PIN_KEY, ' '), nvl(INST_MAC_KEY, ' '), INST_STAT
INTO :saInstHsmIndex, :saInstPrimKey, :saInstPinKey, :saInstMacKey, :saInstStat
FROM TBL_INST_STAT
WHERE INST_CODE = :saInstCode; SQL_NOT_FOUND_RET2 ( );
SQL_ERR_RET2 ( ); /******************
* 保存数据到内部IPC
*******************/
memcpy (gPubStru.saInstHsmIndex, saInstHsmIndex, );
memcpy (gPubStru.saInstMainKey, saInstPrimKey, );
memcpy (gPubStru.saPinKey, saInstPinKey, );
memcpy (gPubStru.saMacKey, saInstMacKey, );
memcpy (gPubStru.saInstStat, saInstStat, ); break;
case DBS_UPDATE:
EXEC SQL
UPDATE TBL_INST_STAT SET INST_STAT = 'Y'
WHERE INST_CODE = :saInstCode; SQL_NOT_FOUND_RET2 ( );
SQL_ERR_RET2( ) break;
case DBS_UPDATE2:
memcpy (saInstMacKey, gPubStru.saMacKey1, ); EXEC SQL
UPDATE TBL_INST_STAT SET INST_MAC_KEY = :saInstMacKey
WHERE INST_CODE = :saInstCode; SQL_NOT_FOUND_RET2 ( );
SQL_ERR_RET2( ) break;
default:
break;
} return ;
}

最新文章

  1. 移动应用开发测试工具Bugtags集成和使用教程
  2. js中创建数组的方法
  3. 设计模式之美:Command(命令)
  4. Android 图片的裁剪与相机调用
  5. 路由器 NorFlash与NandFlash区别
  6. Apache22中配置虚拟主机(Apache VirtualHost)
  7. 保存恢复临时信-Android 中使用onSaveInstanceState和onRestoreInstanceState
  8. Leetcode049. Group Anagrams
  9. powerdesigner jdbc 连接 oracle
  10. Xcode7网络问题
  11. Oberon相关资源
  12. _1_html_
  13. angularjs 利用$http 请求出现 400 Bad Request
  14. JPA实体类注解、springboot测试类、lombok的使用
  15. [dpdk][sysfs][pci] 在dpdk程序中操纵PCI设备
  16. KMS服务器激活WIN方法
  17. tmux入门
  18. [svc]inotify+rsync解决nfs单点问题
  19. c++四舍五入的新方法
  20. vue 将值存储到vuex 报错问题

热门文章

  1. [转]Linux学习
  2. linux自动备份文件 并上传到远程服务器 脚本实现
  3. vue常用事件
  4. 【转】一个Android项目搞定所有主流架构-1.项目介绍和基本MVC架构示例
  5. Html5简单描述(优点与缺点)
  6. 【题解】洛谷P2914[USACO08OCT]断电Power Failure
  7. harbor中碰到的问题
  8. rabbitMq install for windows
  9. reactor模式---事件触发模型
  10. mysql创建表时反引号的作用