博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PRO*C 函数事例 1 -- 数据库连接、事务处理
阅读量:5168 次
发布时间:2019-06-13

本文共 1625 字,大约阅读时间需要 5 分钟。

1、程序结构

        每一个Pro*C程序都包括两部分:(1)应用程序首部;(2)应用程序体
        应用程序首部定义了ORACLE数据库的有关变量, 为在C语言中操纵ORACLE数据库做好了准备。应用程序体基本上由Pro*C的SQL语句调用组成。
主要指查询SELECT、INSERT、UPDATE、DELETE等语句。
        应用程序的组成结构如图所示:
      
2、函数事例

EXEC SQL INCLUDE sqlca ;#include "my_sys.h"#include "errlog.h"/* 连接数据库 */int    OpenDb (char db_type){    EXEC SQL BEGIN DECLARE SECTION;        char    saUser[ 30 ];        char    saPasswd[ 30 ];        char    saTnsname[ 30 ];    EXEC SQL END DECLARE SECTION;    /***********    * 联机数据库    ************/    strcpy (saUser, getenv ("ORACLEUSERID"));    strcpy (saPasswd, getenv ("ORACLEUSERPWD"));    strcpy (saTnsname, getenv ("ORACLETNSNAME"));    EXEC SQL CONNECT :saUser IDENTIFIED BY :saPasswd USING :saTnsname;    if (sqlca.sqlcode != 0)    {        printf ("db not open[%d]\n",  sqlca.sqlcode);        return -1 ;    }    return 0;}/* 重新连接数据库 */int    ReOpenDb( ){    int try_num = 0, ret;    HtLog (ERROR , "db down\n");    CloseDb ( );    while (1)    {        printf ("connect to db %dth\n" , try_num);        ret = OpenDb ('l');        if (ret == 0)        {            printf ("connect to db succ\n");            return 0;        }        CloseDb ( );        sleep (120);        try_num ++;        if (try_num > 15)            break ;    }    printf ("db not open\n");    return -1 ;}/* 关闭数据库 */int CloseDb ( ){    EXEC SQL COMMIT WORK RELEASE;    return 0 ;}/* 事务回滚 */int DbsRollBack ( ){    EXEC SQL ROLLBACK WORK;    return 0;}/* 事务提交 */int DbsCommit (){    EXEC SQL COMMIT;    return 0;}

说明:

       运行前需要在.basrc中配置ORACLEUSERID、ORACLEUSERPWD、ORACLETNSNAME 三个环境变量。其中printf部分可以改成T_log、E_log输出

转载于:https://www.cnblogs.com/uriel/p/4318626.html

你可能感兴趣的文章
hdu 3065 病毒侵袭持续中
查看>>
ruby rails
查看>>
GNU C中的零长度数组
查看>>
【C++】非原创|统计代码覆盖率(一:C)
查看>>
JSP 获取Request 经常使用參数
查看>>
第三次作业
查看>>
c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性
查看>>
phpcms调用语句
查看>>
thinkphp5--多文件入口设置
查看>>
“同样的”约束,不同的位置
查看>>
连接mysql数据库,创建用户模型
查看>>
关于正则表达式 \1 \2之类的问题
查看>>
DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control
查看>>
django uWSGI nginx搭建一个web服务器 确定可用
查看>>
3.4 数据更新
查看>>
[模板]匈牙利算法(二分图匹配)
查看>>
C#通用JSON帮助类
查看>>
c# winform窗口自适应各种分辨率类
查看>>
前端Js框架汇总
查看>>
Android基础&进阶
查看>>