VC下利用Pro*C开发Oracle接口
本文介绍了使用Pro*C/C++在Visual
C++环境下开发Oracle数据库接口程序的方法
设计思路其实这样:首先通过VC建立一个工程,自动化建立MAKEFILE,UNIX需要自己写MAKEFILE。
其次配置VC的环境,将PROC的.H,.LIB的路径加入DERECTIRY。写一个PC文件,即PROC文件。放到工程相应的目录下。然后把PC文件加入工程。使用PROCUI.EXE编译成C源文件。
选择OraSQL8.LIB文件,单击“打开”钮,完成将运行库文件加入工程。
最后把C文件加入工程。
概述
在Visual
C++下开发Oracle库接口主要有两种方法。一种方法是利用Visual
C++提供的多种数据库访问技术,如开放数据库连接ODBC、熟据存取对象DAO、对象连接和嵌入数据库OLE
DB和ActiveX数据对象ADO等。另一种方法是在Visual
C++中嵌入SQL语句,这就是所指的Pro*C/C++(本文简称PROC)。前一种方法由于有MFC
强大的类库支持,熟悉VC编程时则实现方便,且可移植性强;但是,与PROC
相比,应用程序需要经过两层才能和数据库通信接口建立联系,编程相对复杂,执行效率相对较低。PROC支持嵌入式PL/SQL 块等直接调用Oracle
库,将过程化语言和非过程化语言相结合,形成一种更强的开发工具,可开发出满足各种复杂要求的优化应用程序,执行效率高。适合熟悉Oracle技术的人员应用。但是用PROC
开发出的应用程序无法向异构数据库平台移植。
本文详细描述实际利用PROC在Visual C++环境下开发Oracle数据库接口程序的方法和具体操作步骤,并给出了编程实例。叙述以Visual
C++ 6.0版和Oracle8i版为例,其他版本可根据实际情况变更。
几个特殊文件
PROC在VC下开发Oracle库接口时,需要用到几个特殊文件。
1、PROC的可执行文件PROCUI.
EXE
用Oracle_HOME代表Oracle安装后的根目录,当其以缺省方式安装在计算机的D盘时,则Oracle_HOME位置是D: \
Oracle。这时PROC的可执行文件在Oracle_HOME \ Ora81 \ BIN \ PROCUI. EXE,对缺省安装即在D: \ Oracle \
Ora81 \ BIN \ PROCUI. EXE。
2、Oracle支持SQL在VC环境的库文件OraSQL8.
LIB
根据以上约定,OraSQL8. LIB文件在Oracle_HOME \ Ora81 \ PRECOMP \ LIB \ MSVC \
OraSQL8.LIB,对缺省安装即在D: \ Oracle \ Ora81 \ PRECOMP \ LIB \ MSVC \
OraSQL8.LIB。
3、Oracle支持SQL在VC环境的头文件
根据以上约定,头文件 *.h在Oracle_HOME \ Ora81
\ PRECOMP \ PUBLIC \ *.h,对缺省安
相关文档:
我写的脚本,有点慢,将就着用吧
--kill session语句
alter system kill session'50,492';
--以下几个为相关表
SELECT * from v$lock;
SELECT * from v$sqlarea;
SELECT * from v$session;
SELECT * from v$process ;
SELECT * from v$locked_object;
SELECT * from all_ ......
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创
建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂 ......
* start Oracle *
set noexec_user_stack=1
set msgsys:msginfo_msgmax=65535
set msgsys:msginfo_msgmnb=65535
set msgsys:msginfo_msgmap=258
set msgsys:msginfo_msgmni=1792
set msgsys:msginfo_msgssz=32
set msgsys:msginfo_msgtql=1792
set msgsys:msginfo_msgseg=32767
set shmsys:shminfo_shmmax=4294967 ......
第四章:索引
1.creating function-based indexes
sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped);
2.create a B-tree index
sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace
sql> tablespace_name [pctfree integer] ......
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。
下面是 ......