PROC开发的对远程oracle数据的连接、断开和操作

这是本人第一次在此写文章,如有不之处 请大家多多指正!

最近一直再研究如何用proc开发对接oracle数据的知识,现在算是告一段落

本文只要是给大家一个了解怎么在proc的开发中对远程oracle数据的链接、断开、和基本操作。

对本地的oracle数据库来说理论上应该也是适用的。

首先说下过程中遇到的问题:

1.能连接上远程的oracle数据库,但在操作数据库时提示未登录

2.在断开连接时同样提示未登录

问题分析:

其实这两个问题实质上是同一个问题,由于我连接数据库的时候是用的IP和端口连接的。所以后续的操作没有指定实例(数据库)导致提示我未登录

解决方法:

连接数据库的时候指定实例(数据库),后续的操作中指定实例(数据库)就OK啦

在此提示下:在proc的开发中,proc编译器是挑空格的。所以大家在开发是要注意这一点,不然很可能导致你的代码写的对的,但是编译的时候可能出现莫名其妙的问题。


下面是示例代码:

#include <stdio.h>
#include <sqlca.h>
#include <oraca.h>


int main()
{
    int lcount = 0;
    char user[]="wangly";
    char passwd[]="123456";
    char host[]= "172.16.15.216:1523";
    char dbname[]="orcl";
    char connect_string[]="orcl";
    char tablename[]= "TBL_ALARM_INFO";
 
    EXEC SQL CONNECT :user IDENTIFIED BY :passwd AT :dbname USING :connect_string;
    if (sqlca.sqlcode == 0)
    {
        printf("Connect successful!\n");
    }
    else
    {
        printf("connect err: %s\n",sqlca.sqlerrm.sqlerrmc);
        return -1;
    }


    EXEC SQL AT :dbname SELECT COUNT(*) INTO :lcount FROM TBL_ALARM_INFO;
    if (sqlca.sqlcode == 0)
    {
        printf("lcount=%d\n", lcount);
    }
    else
    {
        printf("select err:%s\n",sqlca.sqlerrm.sqlerrmc);
        return -1;
    }




    EXEC SQL AT :dbname ROLLBACK WORK RELEASE;
    if (sqlca.sqlcode == 0)
    {
        printf("Disconnect successful!\n");
    }
    else
    {
        printf("commit err: %s\n",sqlca.sqlerrm.sqlerrmc);
        return -1;
    }
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值