(转)什么是Pro*C/C++

http://blog.youkuaiyun.com/hwz119/archive/2007/07/11/1685905.aspx

什么是Pro*C/C++ 收藏

ORACLE支持几种高级语言中内嵌入SQL语句,或ORACLE库函数调用来访问数据库。它们是C,COBOL,Ada,PASCAL,PL/I等,这些语言称之为宿主语言,用它们开发的程序就称为PRO* 程序,如PRO*C,PRO*COBOL等。
PROC在ORACLE的客户端软件中就有,安装oracle时选上即可。

1.什么是Pro*C/C++
 通过在过程化编程语言C/C++中嵌入SQL语句而开发出的应用程序.
2.简要说明:
 在通用编程语言中使用的SQL称为嵌入式SQL.目的是Pro*C/C++将使 C/C++成为访问数据库的工具.

在ORACLE数据库管理和系统中, 有三种访问数据库的方法;

(1) 用SQL*Plus, 它有SQL命令以交互的应用程序访问数据库;

(2)用第四代语言应用开发工具开发的应用程序访问数据库,这些工具有SQL*Froms,QL*Reportwriter,SQL*Menu等;

(3) 利用在第三代语言内嵌入的SQL语言或ORACLE库函数调用来访问。

Pro*C就属于第三种开发工具之一, 它把过程化语言C和非过程化语言SQL最完善地结合起来,具有完备的过程处理能力,又能完成任何数据库的处理品任务,使用户可以通过编程完成各种类型的报表。

在Pro*C程序中可以嵌入SQL语言,利用这些SQL语言可以完成动态地建立、修改和删除数据库中的表,也可以查询、插入、修改和删除数据库表中的行, 还可以实现事务的提交和回滚。

在Pro*C程序中还可以嵌入PL/SQL块, 以改进应用程序的性能, 特别是在网络环境下,可以减少网络传输和处理的总开销。

2.Pro*C的程序结构图通俗来说,Pro*C程序实际是内嵌有SQL语句或PL/SQL块的C程序, 因此它的组成很类似C程序

ORACLE 8.16 FOR RHLINUX6.2的PRO*C环境

1、PRO*C:

ORACLE数据库作为数据库产品中的佼佼者,应用十分广泛,随着对其应用的深入,使用ORACLE和C来编制应用系统成为许多系统的选择,而ORACLE和C语言的接口知识成为应该掌握的和十分有用的。

PRO*C是ORACLE的预编译器是一种编程工具,通过它把SQL语句嵌入到C语言程序中。如图:

预编译器把源程序作为输入,然后翻译程序中嵌入的 SQL语句,把它们转化成对标准的ORACLE运行库的调用,最后生成一个修改过的源程序。通过对修改过的源程序进行编译、链接,形成可执行文件。

2、环境配置:

A、说明:

ORACLE预编译器在ORACLE 8I安装时是默认或选择安装的,安装了PRO*C,则在$ORACLE_HOME/bin路径下就有了可执行程序PROC,以及相应的未经配置预编译环境。为使PRO*C预编译器能工作我们还必须对环境做一些配置。

ORACLE的PRO*C是对预编译器的选项值的改变来配置环境的。预编译指令基本格式如下:

Proc 选项名=选项值 源文件

也可把选项值的改变放到CONFIG指定的文件中做。

PROC的选项

auto_connect

允许自动连接到 ops$ 帐号

char_map

正在映射字符数组和字符串

Close_on_commit

关闭所有 COMMIT 游标

codekr_c

将要生成的代码类型

Comp_charset

C 编译器支持的字符集类型

Config

用另一配置文件覆盖系统配置文件

Cpp_suffix

覆盖缺省的 C++ 文件名后缀

dbmsnative

兼容模式

Def_sqlcode

生成 '#define SQLCODE sqlca.sqlcode' 宏

Define

定义预处理器符号

Durationtransaction

设置高速缓存中对象的 pin 持续时间

Dynamic

指定 Oracle 或 ANSI 动态 SQL 语义

Errors

是否将错误消息发送到终端

Errtype

输入文件的列表文件名称错误

Fips

ANSI 的 FIPS 标志不符合用法

Header

为预编译标题指定文件扩展名

hold_cursor

在游标高速缓存中控制游标保留

iname

输入文件的名称

Include

包括文件的目录路径

Intype

有关类型信息的输入文件名称

Lines

将 #line 指令添加到生成的代码中

Lname

覆盖缺省列表文件名

Ltype

列表文件中生成的数据量

maxliteral

生成的文字串的最大长度

maxopencursors

高速缓存的开放游标的最大数量

mode

代码符合 Oracle 或 ANSI 规则

Nls_char

指定国家语言字符变量

Nls_local

控制 NLS 字符语义的实现方法

Objects

支持对象类型

oname

输出文件名

oraca

控制 ORACA 的使用

Pagelen

列表文件页面长度

parse

控制进行语法分析的非 SQL 代码

prefetch

游标 OPEN 期间预读取的行数

Release_cursor

控制从游标高速缓存中释放游标

Select_error

控制选择标记错误

sqlcheck

编译时间 SQL 校验总量

Sys_include

系统标题文件所在目录

Threads

指示多线程应用程序

type_code

将 Oracle 或 ANSI 类型代码用于动态 SQL

Unsafe_null

允许在没有指示变量的情况下进行> NULL 读取

Userid

用户名/口令 [@dbname] 连接串

Varchar

允许使用隐式 varchar 结构

Version

将要返回的对象版本

 

大部分选项我们都可以用默认值,但其中有几个选项是需要配置的。

l CONFIG:指定PROC的CONFIG文件。PROC默认配置文件为$ORACLE_HOME/precomp/admin/pcscfg.cfg,我们可以编辑我们要使用的CONFIG文件。

l INCLUDE:包括文件的目录路径,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。

l SYS_INCLUDE:系统头文件所在目录,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。但要注意可能默认的系统头文件的路径不对。如 
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include)

lUSERID:用户名/口令 [@dbname] 连接串

B、配置:

配置工作比较简单,只要将默认的>CONFIG文件COPY到源程序所在的路径下,修改其中的USERID。

使用如下命令对PROC源文件进行预编译,输出相应的C源程序。

Proc config=myconfg.cfg iname=myprog.pc oname=myprog.c

PRO*C将对INAME指定的PROC源文件进行预编译,输出ONAME指定的文件。

3、联编环境:

预编译只是将PROC源文预编译成C源文件,而要将不同源文件编译生成的目标文件联编,则要指定联编所需要的LIBRARY,ORACLE接口程序(PROC程序)需要的the client shared library分布在许多路径下,为联编方便,ORACLE提供了$ORACLE_HOME/precomp/demo/proc/demo_proc.mk文件。

使用如下命令:

make–f demo_proc.mk OBJS=”myporg.o mydb.o” EXE=myprog.e build

 
PRO*C开发入门 PRO*C入门开发 阅读详情

相关推荐

Oracle pro*c/c++通讯区 sqlca oraca

调试PROC*C程序时,SQL语句执行信息都存放在sqlca oraca中

u012516419的博客 1185

什么是Pro*C/C++

ORACLE支持几种高级语言中内嵌入SQL语句,或ORACLE库函数调用来访问数据库。它们是C,COBOL,Ada,PASCAL,PL/I等,这些语言称之为宿主语言,用它们开发的程序就称为PRO* 程序,如PRO*C,PRO*COBOL等。PROC在ORACLE的客户端软件中就有,安装oracle时选上即可。1.什么是Pro*C/C++ 通过在过程化编程语言C/C++中嵌入SQL语句而开发

1万+

基于Pro*C/C++的嵌入式SQL程序开发实战详解

在ProC程序中,声明节(DECLARE SECTION)* 是一个专门用于声明主机变量(Host Variables)和指示器变量(Indicator Variables)的区域。所有需要在嵌入式SQL语句中使用的C语言变量都必须在此区域内声明,否则预编译器将无法识别它们作为SQL上下文的一部分。声明节的标准语法如下:// 主机变量声明int emp_id;// 指示器变量此结构必须成对出现,且不可嵌套。一旦进入。

weixin_42620563的博客 959

oracle嵌入式sql,ORACLE基础学习----ORACLE傻瓜手册(第八章--嵌入式SQL)

ORACLE基础学习----ORACLE傻瓜手册(第八章--嵌入式SQL)(2006-07-14 13:42:51)8 嵌入式SQL(C)所有程序例子都在附件08_proc/下。在C语言程序代码中直接嵌入SQL语句,使数据库编程变得非常简单明了,而且嵌入式SQL是一种标准,代码不需要很多的修改就能移植到支持嵌入式SQL的数据库系统上去,但这同时也是一个缺点,许多数据库系统不提供嵌入式SQL的预编译...

weixin_32639437的博客 594

Pro*C/C++ 编程

Pro*C/C++ 编程 1 一、Pro*C/C++ 简介 1 1.1、Pro*C/C++ 是什么 1 1.2、Pro*C/C++ 处理流程 2 二、Pro*C/C++ GCC 环境配置 3 2.1、Pro*C/C++ 预编译环境 3 2.2、GCC 编译器 5 三、开始编写第一个Pro*C++代码 5 3.1、第一个Pro*C++代码 5 3.2、Pro*C++代码预编译 6 3.3、GCC 编译 7 3.4、最后测试 8 四、复杂一些的Pro*C/C++代码 8 4.1、代码部分 8 4.2、代码编译 12 4.3、代码测试 14

UDS诊断ISO14229新手入门篇

这个命令的格式稍微复杂一点。sub-function = 0x06 用于读取某个 DTC 及其相关的环境数据,此时 parameter 为 4 个 byte,前三个 byte 用于标识我们要读取的 DTC,第四个 byte 用于标识要读取的环境数据的范围,UDS 规定使用 FF 来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括 DTC 状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此 DTC 产生时的测量数据。

weixin_45387165的博客 1974

oracle proc配置

Oracle数据库安装好之后,在终端输入proc命令是不能直接使用的,需要修改一下配置文件才能直接直接使用proc命令 1.修改用户目录下的.bashrc配置文件    我的用户目录在/home/oracle下,oracle为用户,在/home/oracle目录下有一个.bashrc的隐藏文件,ctrl+H可以让隐藏文件显示出来    让后用vi将其打开,命令为:    vi .bashr

开往春天的地铁 1051

单周期CPU设计【Verilog】

第一章 单周期CPU的设计原理 为实现单周期CPU,本文首先研究了单周期CPU的相关理论和工作原理。本章首先简要介绍单周期CPU的基本概念,然后对CPU的工作原理进行简要分析,以便为单周期CPU的设计和开发提供理论基础。 1.1 单周期CPU概述 中央处理器,即CPU,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。在CPU内部,电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一

醉酒、冰城外 2万+

oracle数据库项目c,Oracle数据库开发(三).ProC的预编译参数

一、前言我们上面已经了解Windows和Linux下的ProC开发环境,这里我们更进一步去简要介绍下ProC的预编译参数。二、什么是预编译预编译过程中,Pro*C/C++会自动生成C或者C++的代码,去替代你原来的嵌入SQL,生成的代码包含了一些数据结构,其中声明了数据类型,长度,变量地址以及SQLLIB需要的一些其他信息。生成的代码还包括了执行嵌入SQL操作的一些SQLLIB调用。SQLLIB ...

weixin_42134285的博客 673

abaqus运行报错 WindowsError:[Error 2]

abaqus提交job总是提示“WindowsError [Error 2”,报这个错误,可能是由于安装其他软件改变了abaqus软件的路径导致,总结了看到的教程,按照下面的方法可以解决这个问题。 步骤一:找到你的abaqus安装路径(我是按照一个安装视频安装的,安装路径为SIMULI1),然后找到SIMULIA文件夹,点击进入后找到commands文件夹,将这个路径复制下来。 步骤二:我的电脑右键属性,在左侧中找到高级系统设置并...

az101za的博客 1万+

基于matlab版本的三维直流电法反演算法

可以使用RESINVM3D工具包等现成的MATLAB工具进行三维直流电法反演。反演问题求解:基于MATLAB的反演问题求解算法实现和应用,包括反演问题数值模拟、反演问题参数优化和反演问题结果分析。希望这个代码示例能帮助你入门三维直流电法反演。如果有更具体的需求或问题,可以进一步探讨。反演过程中可能需要调整正则化参数和优化算法的设置。需要根据实际问题实现,可能涉及复杂的数值计算。

ytttr873的博客 668

proc c编译失败解决办法

Proc C

青皮虾的专栏 3697

Uncaught ReferenceError: process is not defined

这个错误 Uncaught ReferenceError: process is not defined 通常出现在浏览器环境中,因为 process 是 Node.js 环境的内置对象,并不是浏览器原生支持的。因此,浏览器无法识别 process,导致该错误。在App.vue中加上以下代码就能够有效解决。

猿小白的博客 1740

[转]pro*c/c++编译错误 ” error: sqlca.h: No such file or directory “ 的解决办法

$ gcc -o test test.c出现错误:error: sqlca.h: No such file or directory【解决方法】知道 sqlca.h 在 $ORACLE_HOME/precomp/public/下更正后执行“$ gcc -o test test.c -I $ORACLE_HOME/precomp/public又出现错误:undefined reference to...

weixin_30511107的博客 424

AI Agent开发第49课-DIFY让AI自动预约排班后发企业微信通知-MongoDb-Redis-企业微信调用

我们的Dify会讲得很透彻,坚持喂饭级教程,从一个基本的AI自动预约客户到自动记录客户的信息再到自动判断下一步如何走全部是AI化的,这是一个真正的AI原生应用,它来自于我的一个大型物业公司用AI自动预约系统中的一部分。我们会使用这个预约流做完整的Dify例子来讲完,因为它太有代表性了。工作流中的控制反转、AI决策下一步怎么走、人为干涉、用户行为判断、外部中间件如Redis,今天我们就要讲到在Dify中调用MongoDB的数据以及企业微信通知来作为预约派单的最后一步了。

打造全国最全的AI Agent开发知识领域的博客 1753

【OpenCV】第二十三章: 图像特征检测之SURF、FAST、BRIEF、OBR算法

4、由于在检测特征点时是需要对图像中所有的像素点进行检测,然而图像中的绝大多数点都不是特征点,如果对每个像素点都进行上述的检测过程,那显然是种浪费,所以FAST采用一种进行非特征点判别的方法:首先对候选点的周围90度的点(1,9,5,13)四个点进行测试,而且是先测试1和9,如果它们两个符合阈值要求再测试5和13。继SIFT和SURF后,大家在特征点检测的速度上又进行了很多的改进尝试,但速度的提升效果都不是非常明显,直到FAST算法诞生,特征点检测的速度才有了一个质的飞跃。无法计算描述符的特征点将被删除。

因为热爱所以坚持 2158

集成Pro*C/C++到Visual C++环境

本文介绍如何将Pro*C/C++集成到Microsoft Visual C++ 5.0开发环境中。包括以下内容: 增加Pro*C/C++到Tools菜单列表中。 指定文件路径。 建立项目文件。 增加Pro*C/C++到Tools菜单列表   当将Pro*C/C++增加到Tools菜单列表中后,我们就可以在Visual C++ 5.0中直接使用Pro*C/C++预编译器了。下

伯虎的网海日志 2526

面向红外小目标检测的SCTransNet:模型优势解析、代码实现与完整复现指南

摘要:本文详细介绍了基于SCTransNet的红外小目标检测全流程实践方案。针对红外小目标检测面临的三大挑战(特征稀缺、背景干扰、尺度变化),SCTransNet通过空-通道交叉注意力机制有效增强目标特征。文章包含完整的PyTorch实现代码,涵盖特征提取、注意力模块、多尺度融合等核心组件,并提供模型训练、评估的具体方法。同时给出毕设创新方向的建议,如模型轻量化、多模态融合等,帮助提升研究深度。该方案技术难度适中,应用价值明确,是红外目标检测领域理想的毕设选题方向。

m0_71589036的博客 4760

【 Pro*C/C++ 】 Pro*C/C++ 编程

ProC/C++ 编程 1一、ProC/C++ 简介 11.1、ProC/C++ 是什么 11.2、ProC/C++ 处理流程 2二、ProC/C++ GCC 环境配置 32.1、ProC/C++ 预编译环境 32.2、GCC 编译器 5三、开始编写第一个ProC++代码 53.1、第一个ProC++代码 53.2、ProC++代码预编译 63.3、GCC 编译 73.4、最后测试 8四、复杂一些的ProC/C++代码 8。

沐风—云端行者 1718

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pro*C/C++支持c++开发实例

Pro*C/C++同时支持C和C++,但是当预编译包含C++代码的PC源程序时,必须合理地设置相关的预编译选项。   代码:xx.pc /* 功能:演示了Pro*C/C++源程序生成C++源文件 说明:Pro*C/C++支持C和C++。当预编译包含C++代码的PC源程

JoeBlackZQQ的专栏 1200

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

proc*c/c++简介

一、概述 1. 概念 通过在过程化编程语言C/C++中嵌入SQL语句而开发出的应用程序。在通用编程语言中使用的SQL称为嵌入式SQL。 在SQL标准中定义了多种语言的嵌入式SQL ,各个厂商对嵌入式SQL的具体实现不同。 在C/C++语言中嵌入SQL语句而开发出的应用程序称为Pro*C/C++程序。 目的:使c/c++这种高效率语言成为访问数据库的工具。 嵌入式SQL的载体是宿主...

HelloWorld 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

何为Pro*C/C++

ORACLE支持几种高级语言中内嵌入SQL语句,或ORACLE库函数调用来访问数据库。它们是C,COBOL,Ada,PASCAL,PL/I等,这些语言称之为宿主语言,用它们开发的程序就称为PRO* 程序,如PRO*C,PRO*COBOL等。 PROC在ORACLE的客户端软件中就有,安装oracle时选上即可。 1.什么是Pro*C/C++  通过在过程化编程语言C/C++中嵌入SQL语

xiaoniuwangwang的专栏 525

Pro*C/C++ windows编程

Pro*C/C++ windows编程 来源:phoenix.yuwen 2005-11-21[1]先建立一个winproc.pc文件在里面把和oracle数据库相关的操作写成类和函数预编译时注意:预编译设置项中要修改 CODE,PARSE,CPP_SUFFIX1:CODE选CPP2:PARSE选none或partial3:CPP_SUFFIX选cpp[2]预编译成功后生成winproc.cpp文

time.yuwen' Blog 1513

Pro*C入门手册+语法详解

Pro*C语法详解 概述 嵌入式 SQL 是一种结合 C/C++ 等高级语言的计算能力和 SQL 的数据库操作能力的方法。它允许您从应用程序执行任何 SQL 语句。Oracle 的嵌入式 SQL 环境称为 ProC。 ProC 程序分两步编译。首先,Pro*C预编译器 识别程序中嵌入的 SQL 语句,并将它们替换为对 SQL 运行时库中函数的适当调用。输出是纯 C/C++ 代码,所有纯 C/C++ 部分都完好无损。然后,使用常规 C/C++ 编译器编译代码并生成可执行文件。有关详细信息,请参阅演示程序部分。

P.L.C的博客 8066

Pro*C还是OCI?

做C/C++做ORACLE开发,是PRO*C好还是OCI好? PRO*C和OCI各有特色吧! PRO*C的好处就是学习难度低,开发效率高,对于数组类型的宿主变量绑定也很方便,如果都使用批量执行的话,性能也是很高的。PRO*C在C/C++代 码中嵌入SQL,然后proc预编译器将pc文件翻译成c或cpp文件,再由GCC编译成目标文件。微软近几年推出了LINQ,相比ORACLE多年前推 出的PRO

3231

Pro*C/C++ 学习笔记(一)

一. Pro*C简介       关键字:Oracle 预编译工具 SQL语句和PLSQL块 高级编程语言       Oracle为应用开发人员所提供的许多预编译工具,如Pro*C,Pro*COLBOL,Pro*FORTURN等Pro*系列工具。通过使用这些预编译工具,Oracle允许应用开发人员在高级编程语言中内嵌SQL语句和PLSQL块,从而简化数据库应用程序的开发难度,而其中Pro*C

dupu1的专栏 1827
上一篇: (转)oracle中pro*c的学习
下一篇: (转)Pro*C 程序概述
mlxia
博客等级 码龄26年 28粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值