首页 工作计划 工作总结 事迹材料 心得体会 述职报告 疫情防控 思想汇报 自查报告 党建材料 策划方案 教案设计 范文大全
  • 主题教育
  • 党课下载
  • 党史学习
  • 振兴乡镇
  • 工作汇报
  • 不忘初心
  • 规章制度
  • 谈话记录
  • 扫黑除恶
  • 共同富裕
  • 脱贫攻坚
  • 整改报告
  • 工作要点
  • 对照材料
  • 调查报告
  • 教育整顿
  • 观后感
  • 申请书
  • 讲话稿
  • 致辞稿
  • 评语
  • 口号
  • 发言稿
  • 读后感
  • 治国理政
  • 学习强国
  • 公文范文
  • Linux操作系统下PRO*C和OCI程序设计分析与比较

    时间:2023-06-01 13:25:06 来源:正远范文网 本文已影响 正远范文网手机站

    摘要:Linux操作系统具备了Unix系统的稳定性,又具有成本低廉,高扩展性与可维护性好的优点,使其越来越成为服务器操作系统的首选。本文主要介绍PRO*C和OCI程序设计Linux操作系统上的运用和实现,具有一定的参考价值。

    关键词:Linux;PRO*C;OCI;程序设计;分析;比较

    中图分类号:TP311.1文献标识码:A文章编号:1007-9599 (2010) 06-0000-00

    PRO*C&OCI Program Analysis and Comparison under Linux Operating System

    Wang Yong

    (Liaohe Oilfield Chinese Oil Industrial Company of China Petroleum,Panjin124010,China)

    Abstract:Linux operating system with a Unix system stability,but also has low-cost,high scalability and maintainability good advantage,it has increasingly become the preferred server operating system.In this paper, application and implementation of PRO*C and OCI Programming Linux operating system,with some reference value.

    Keywords:Linux;PRO*C;OCI;Programming design;Analysis;Comparison

    Linux下目前比较常用的接口访问方式有pro*c/c++,OCI二种方式,每种方式各有优缺点;这两者的强强联合也必具有较高的性能,在实际中有广泛的运用。这就是PRO*C和OCI程序设计。

    一、pro*c程序设计

    pro*c是一种预编译语言,使用c语言作为其宿主语言,内嵌SQL语句来访问Oracle数据库。利用第三代高级语言内嵌入SQL语句来开发应用程序

    二、OCI(OCCI)程序设计

    OCI是Oracle公司开发的一套完整的底层API,使用C语言或C++语言直接操控数据库。OCI访问数据库的大致流程为:C源文件经过编译得到目标文件,通过链接程序调用OCI库最后得到可执行的应用程序来操作Oracle数据库服务器。其应用程序的创建步骤如图1所示。OCI程序的SQL语句处理步骤如图2所示。

    图1 OCI的程序结构图 图2 OCI程序的SQL语句处理步骤

    三、二者的比较

    PRO*C的好处就是学习难度低,开发效率高,对于数组类型的宿主变量绑定也很方便,如果都使用批量执行的话,性能也是很高的。PRO*C在C/C++代码中嵌入SQL,然后proc预编译器将pc文件翻译成c或cpp文件,再由GCC编译成目标文件。微软近几年推出了LINQ,相比ORACLE多年前推出的PRO*C,这又是照虎画猫的伎俩。本质上来说,proc预编译器只是一个代码生成工具,RPO*C中对数据库的操作最终还是转换成了对OCI的调用。

    PRO*C不好的地方在于其语法和原生的C/C++语法有冲突,如果不熟悉,常常就会发生使用proc无法编译通过的现象。而且很多特殊的场合,需要很多技巧来绕过proc编译器,在GCC编译器的层面又要绕一次。对于高级开发方面,PRO*C就完全无能为力了,毕竟PRO*C提供的语法有限,功能有限。

    OCI应该说是ORACLE最基本最底层的调用接口,相信其他的所有ORACLE客户端工具都是调用OCI的API来实现的(比如sqlplus,sql*loader,pl/sql developer,Pro*C,ADO.NET for Oracle等)。OCI使用C风格的函数提供接口,洋洋洒洒的成百上千个函数中覆盖了ORACLE数据库操作的方方面面。

    OCI的学习难度高,开发效率也不高,执行效率方面,由于没有任何的封装,理论上来说是最高的,但是执行效率和使用者的水平有很大关系,使用不当,很容易开发出糟糕的ORACLE应用。高级开发方面,最吸引我的莫过于批量执行和直接路径加载,其他的高级功能也都包含在OCI库中。

    然而,OCI的开发难度可以通过封装来降低。封装一个好用的OCI库非常有意义:封装采用的是原生的C/C++语法,不是PRO*C这样的怪异语法,相比之下编译期遇到的问题容易解决,并且在配合template等高级技巧方面也容易得多。(PRO*C在开发的时候都小心翼翼的,唯恐加多了代码编译不过去)。甚至,可以自己开发一个代码生成工具,通过映射数据库的Schema来自动生成对表的CRUD代码,这样的话,OCI的开发效率就可以与PRO*C媲美了。对于批量执行,直接路径加载等功能也进行封装的话,使用这些高级功能更能大大提高执行效率,这点是PRO*C望尘莫及的。

    Pro*C和Pro*C++是不同的,主要在预编译器proc的命令行参数上体现区别

    个人的感觉是Pro*C的检查语法要严格一些,比如变量一定要写在DECLARE SECTION里面,否则就编译不过,而PRO*C++只需要把需要绑定的变量写在DECLARE SECTION里面就行了。

    在绑定宿主变量方面,PRO*C要比PRO*C++好些,用了PRO*C++后,特别是绑定结构体的时候,结构体识别不了。Pro*C对PL/SQL语法的支持是有限的,典型的就是不支持INNER JOIN,LEFT OUTER JOIN等语法,还有不支持WITH等语法。因此对于一些新奇的语法,最好先写个小例子程序来试试能不能编译过,

    总结

    对于小的、要求快速开发完成的、软件生命周期短,且不需要什么高级功能的ORACLE应用,PRO*C还是相当不错的,学习难度低,开发效率高。对于高性能、高稳定性、对结构要求清晰,且时间执行的服务器软件等,用OCI更好(当然是封装后的OCI,不封装简直等于自找苦吃)。代码的清晰性,高级功能等方面,OCI更加灵活和方便。

    参考文献:

    [1]弓岱伟,孙德敏,孟祥荣.基于Solaris的DCS内嵌式先进控制与优化软件的设计和应用[J].小型微型计算机系统,2008,(08)

    [2]Solaris10:名副其实的行业里程碑[J].中国计算机用户,2004,(47)

    [3]范延军.强大的微机UNIX平台—Solaris[J].软件世界,1996,(04)

    推荐访问:程序设计 操作系统 分析 Linux OCI