一、提要

上文简单介绍了Windows下ProC配置开发,这次我们使用Linux平台再次配置Oracle ProC开

发环境(RedHat Linux 9 + Oracle 92)。

《ORACLE数据库开发(一).Windows下配置使用ProC》和《ORACLE数据库开发(二).Linux下配置使用ProC》

这两篇文章的目的只是做一些基础介绍,至于Oracle ProC编译参数以及Linux下的ProC Makefile

相关内容,将再后续文章逐步引入。

一言以弊之,先易后难。

二、数据库环境

与Windows下十分类似,首先确认安装了组件,Oracle - Application Development -

Pro C-C++ 。安装后会在$ORACLE_HOME/bin生成相应可执行文件,在$ORACLE_HOME/precomp/demo/proc

下也会生成一些makefile文件和示例。

三、示例文件

main.pc

---------------------------------------------------------

#include "sqlca.h"

#include #include #include void sql_error(char *msg)

{

printf("\n%s %s\n", msg,(char *)sqlca.sqlerrm.sqlerrmc);

EXEC SQL ROLLBACK RELEASE;

exit(0);

}

int main() {

EXEC SQL INCLUDE sqlca;

EXEC ORACLE OPTION (RELEASE_CURSOR = YES);

EXEC SQL WHENEVER SQLERROR DO sql_error(" ");

EXEC SQL BEGIN DECLARE SECTION;

VARCHAR oraCN[30];

EXEC SQL END DECLARE SECTION;

strcpy(oraCN.arr,"system/manager@linuxdb");

oraCN.len = strlen(oraCN.arr);

oraCN.arr[oraCN.len]='\0';

EXEC SQL CONNECT :oraCN;

printf("\n [OK Connected!] ");

return 0;

}

代码其实是Windows的原版。

四、编译运行

无需修改任何参数文件,即安装后直接创建main.pc,执行如下命令:

$ proc parse=none iname=main.pc

Pro*C/C++: Release 9.2.0.4.0 - Production on Thu Jun 7 14:17:05 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

System default option values taken from: /home/ora/ora9/oracle/precomp/admin/pcscfg.cfg

$ gcc -g -o main main.c -I/home/ora/ora9/oracle/precomp/public -L/home/ora/ora9/oracle/lib -lclntsh

$ ./main

ORA-12541: TNS:no listener

成功编译运行,这里也可以使用《ProC动态SQL示例(第1,2,3种方法)》一文中的示例,

将//注释全部替换为空,即可编译。

http://blog.csdn.net/liwei_cmg/archive/2006/05/29/759963.aspx

不过会有告警提示:

/tmp/ccC7E6qe.o(.text+0xea): In function `db_connect':

/home/ora/develop/src/db.c:385: the `gets' function is dangerous and should not be used.

这个是由于使用了gets函数所致,见gets的man手册:

BUGS

Never use gets().  Because it is impossible to tell without knowing the

data in advance how many  characters  gets()  will  read,  and  because

gets() will continue to store characters past the end of the buffer, it

is extremely dangerous to use.  It has  been  used  to  break  computer

security.  Use fgets() instead.

It  is  not  advisable  to  mix calls to input functions from the stdio

library with low - level calls to read() for the file descriptor  asso-

ciated  with  the  input stream; the results will be undefined and very

probably not what you want.

要解决这个问题,可以使用scanf函数替换gets,获取屏幕输入。如 scanf("%s",cmd)。

proc除了能用于oracle开发_能不能用于mysql开发_Oracle数据库开发(二).Linux下配置使用ProC...相关推荐

  1. linux 和android开发环境,如何在linux下配置AndroidStudio开发环境

    1.选择linux系统 个人比较推荐国产的UbuntuKylin,目前最新的系统已经更新到16.04了,这个系统集合了原生Ubuntu系统的优点,有具有中国特色,比较适合国人使用.还有一个国产系统比较 ...

  2. 怎么打oracle MySQL补丁_Oracle数据库opatch补丁操作流程

    一. 升级前准备工作 1. 确认数据库版本 使用dba登陆查询当前数据库的版本 SQL> select * from v$version; BANNER -------------------- ...

  3. proc除了能用于oracle开发_能不能用于mysql开发_MySQL 和 Oracle Enterprise Manager 开发人员 VM...

    MySQL 和 Oracle Enterprise Manager 开发人员 VM 此 VM 提供的组件和练习可以让您更加熟悉安装和使用 Oracle Enterprise Manager 管理 My ...

  4. sql 拆分_实践参考:MySQL架构设计从开发规范、选型、拆分到减压实战指南

    导引 作者,李辉,原新浪爱彩票运维负责人,常用网名:门牙没了.曾主导新浪爱彩票的MySQL运维工作.培训合伙人.资深讲师,中国科学院大学在读研究生(大数据方向),擅长大型项目的关系型数据库运维和管理, ...

  5. 连接mysql工具_非常实用的mysql可视化连接工具,开发测试必备软件,快收藏吧...

    今天小编给大家介绍一款mysql数据库连接工具,对于很多开发或者测试人员,在本机安装mysql连接客户端很麻烦,但是又需要查看数据库数据,此时简单快速的查看数据库工具就很重要了,今天给大家介绍一个带有 ...

  6. wsl Java开发_微软开源 WSL 样本,在 Windows 上体验 Linux

    在 2015 年的一次活动中,这位第三任微软 CEO 说出「Microsoft Loves Linux!」,宣布开源界最大敌人的微软,正式拥抱这个开源世界最大的操作系统:Linux. 其实在云计算领域 ...

  7. python与h5开发_【Python】真零基础Python开发web

    Python开发web服务的优势是开发效率高,可能只需要java五分之一的代码量. Python搭建web服务有许多框架,本文介绍Django和bottle两个框架. Django 安装 首先,安装该 ...

  8. 云数据库 MySQL使用规范 数据库开发人员一定要看!

    规范化对云数据库 MySQL 的管理和维护,避免操作不当对云数据库 MySQL 造成不可用等影响.指导数据库开发人员合理编写 SQL,发挥云数据库 MySQL 最优性能. 权限管理规范 考虑到云数据库 ...

  9. Linux下配置Golang开发环境

    前几天无意间看到了微信推送的golang开发的消息,看到golang那么牛逼,突然心血来潮想学习一下go.工欲善其事必先利其器,想做go开发,必须先配置好go的开发环境(就像开发Java先安装配置jd ...

最新文章

  1. ACM模板--链接表 有向图
  2. TCP/IP拥塞控制复习
  3. MongoDB3.4 版本新节点同步的一点惊喜
  4. main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...
  5. python中基例_Python python从入门到实践(5) --代码复用
  6. 萤火虫小程序_9.9元起!萤火虫中秋文化节来了!特价门票限量秒杀,手慢无!...
  7. Python 线程池 ThreadPoolExecutor(二) - Python零基础入门教程
  8. MongoDB入门简介
  9. 查找字符串末尾含关键字_EXCEL函数公式大全之利用FIND函数和RIGHT函数LEN函数取末尾字符...
  10. 百万年薪的腾讯员工买得起深圳房子吗?
  11. 如何解决PHP里大量数据循环时内存耗尽的问题
  12. 信号与线性系统管致中第六版pdf_2021年武汉工程大学834信号与系统考研全套
  13. 怎么在桌面添加便签小工具,win7桌面便签小工具应该怎么添加
  14. 单片机破解的常用方法及应对策略
  15. 阵处理与波束形成学习心得(二)
  16. 第十课◆ Newland Edu Li nearI ayout和Re lati vel ayout
  17. okcc中FXS网关老掉注册要怎么解决?
  18. Cocos2d-x 2.0.1 学习tests示例(一)Manual Transformation
  19. 2023年网络安全比赛--Web综合渗透测试中职组(超详细)
  20. linux环境JAVA解压zip_Linux文件解压缩详解

热门文章

  1. 一个妹子的大厂后台面试经验总结
  2. android 详解画图,android画图之贝塞尔曲线讲解详解
  3. hadoop 单机单间_零基础入门hadoop大数据四——Hadoop框架前奏,JDK环境配置
  4. 新鲜新奇事物_对各样新奇事物都有兴趣去了解的星座
  5. pytorch 入门基础
  6. can‘t convert cuda:0 device type tensor to numpy
  7. PaddleHub 视频口罩检测
  8. Unknown column 'subject_1.pid' in 'field list') [SQL: 'SELECT anon_1.screen_id AS anon_1_screen_i
  9. pytorch和Numpy的区别以及相互转换
  10. twisted Unhandled error in Deferred scrapy