免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1540 | 回复: 0
打印 上一主题 下一主题

Oracle10G--PROC编程篇(Linux) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-05 09:56 |只看该作者 |倒序浏览
   PROC编程相信在Linux下工作的朋友应该不陌生吧!下面就来具体介绍些Proc编程相关的东西,此文相对简单,请高手们绕行。
PROC编程篇
(此文仅供Oracle初学者参考只用)
/**********************************************
** 文章名称:Oracle10G--PROC编程篇(Linux)
** 版权信息:可以任意转载,但要注明出处及作者信息
** 作   者: 隗公万
** 时   间: 2009.06.05
** 联系方式:weigongwan@gmail.com
***********************************************/
一、简单取得系统时间
               
               
                #include
#include
#include
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE oraca;
main( int argc, char *argv[] )
{
        EXEC SQL BEGIN DECLARE SECTION;
                varchar vcBuffer[32];
        EXEC SQL END DECLARE SECTION;
        /* Connect To Oracle Datebaase */
        if(OU_ConnectDatabase("weigw","weigw") != 0)
        {
                printf("Connect Database failed!\n");
                return -1;
        }
        memset(vcBuffer.arr, 0x00, sizeof(vcBuffer.arr));
        EXEC SQL select sysdate into :vcBuffer from dual;
        printf("SYSDATE:\n", vcBuffer.arr);
        EXEC SQL COMMIT WORK RELEASE;
        return 0;
}
/*
**
** 功能说明:连接数据库
** 输入参数:
** 输入参数:
** 输出参数:
** 返回值说明:0-成功  其他-失败
*/
int OU_ConnectDatabase(char *con_name,char *con_passwd)
{
      EXEC SQL BEGIN DECLARE SECTION;
            VARCHAR uid[20];
            VARCHAR pwd[20];
       EXEC SQL END DECLARE SECTION;
        strcpy(uid.arr,con_name); /*strcpy(uid.arr,"weigw");*/
        uid.len=strlen(uid.arr);
        strcpy(pwd.arr,con_passwd); /*strcpy(pwd.arr,"weigw");*/
        pwd.len=strlen(pwd.arr);
        EXEC SQL CONNECT :uid IDENTIFIED BY :pwd ;
        return sqlca.sqlcode;
}
二、多库用户操作(排他锁)
#include
#include
#include
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE oraca;
main( int argc, char *argv[] )
{
        EXEC SQL BEGIN DECLARE SECTION;
                VARCHAR vcBuffer[32];
                int ID;
                const char *dbname1 = "dbname1";
                const char *dbname2 = "dbname2";
        EXEC SQL END DECLARE SECTION;
        /* Connect To Oracle Datebaase dbname1 */
        if(OU_ConnectDatabase("weigw","weigw","orcl","dbname1") != 0)
        {
                printf("Connect Database failed!\n");
                return -1;
        }
      
/* Connect To Oracle Datebaase dbname2 */
        if(OU_ConnectDatabase("weigw","weigw","orcl","dbname2") != 0)
        {
                printf("Connect Database dbname 2 failed!\n");
                return -1;
        }
       ID = 0;
       memset(vcBuffer.arr, 0x00, sizeof(vcBuffer.arr));
       vcBuffer.len = 0;
       EXEC SQL AT :dbname1 SELECT COUNT(*) INTO :ID FROM WEIGWTEST;
       ID += 1;
       strncpy(vcBuffer.arr, "dbname1", sizeof(vcBuffer.arr) - 1);
       vcBuffer.len = strlen(vcBuffer.arr);
       EXEC SQL AT :dbname1 INSERT INTO WEIGWTEST VALUES(:ID, :vcBuffer);
       EXEC SQL AT :dbname2 INSERT INTO WEIGWTEST VALUES(:ID, :vcBuffer);
       EXEC SQL AT :dbname1 COMMIT;
       EXEC SQL AT :dbname1 ROLLBACK;
       EXEC SQL COMMIT WORK RELEASE;
       return 0;
}
/*
**
** 功能说明:连接数据库
** 输入参数:
** 输入参数:
** 输出参数:
** 返回值说明:0-成功  其他-失败
*/
int
OU_ConnectDatabase(
    char *con_name,
    char *con_passwd,
     char *con_string,
     char *con_dbname
) {
      EXEC SQL BEGIN DECLARE SECTION;
            VARCHAR uid[20];
            VARCHAR pwd[20];
            VARCHAR sid[20];
            VARCHAR dbname[20];
       EXEC SQL END DECLARE SECTION;
       memset(uid.arr, 0x00, sizeof(uid.arr));
       uid.len = 0;
       memset(pwd.arr, 0x00, sizeof(pwd.arr));
       pwd.len = 0;
       memset(sid.arr, 0x00, sizeof(sid.arr));
       sid.len = 0;
       memset(dbname.arr, 0x00, sizeof(dbname.arr));
       dbname.len = 0;
        strcpy(uid.arr,con_name);
        uid.len=strlen(uid.arr);
        strcpy(pwd.arr,con_passwd);
        pwd.len=strlen(pwd.arr);
        strcpy(sid.arr,con_string);
        sid.len=strlen(sid.arr);
        strcpy(dbname.arr,con_dbname);
        dbname.len=strlen(dbname.arr);
        EXEC SQL CONNECT :uid IDENTIFIED BY :pwd AT :dbname USING :dbname;
        return sqlca.sqlcode;
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/31179/showart_1955734.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP