首页
网页制作
网络编程
脚本专栏
数据库
网站运营
网络安全
平面设计
CMS教程
搜索
建站极客
数据库
oracle
正文
Oracle使用PL/SQL操作COM对象
所属分类:
数据库
/
oracle
阅读数: 65
收藏 0
赞 0
分享
正在看的ORACLE教程是:Oracle使用PL/SQL操作COM对象。PL/SQL是由Oracle公司对标准SQL进行扩展,专用于Oracle数据库中程序设计的专用语言,属第三代过程式程序设计语言。从Oracle8开始提供了直接从PL/SQL中调用外部C语言过程,允许开发人员用PL/SQL进行使用C语言编制的程序模块。从Oracle8i开始,又引入了Java程序。
在本文中主要介绍外部例程的基本原理以及使用条件,介绍如何通过引用外部例程来操作Windows中的COM对象,并做了一个操作Excel对象的示例。
本文的运行环境全部建立在Oracle9i和Windows2000。其中ORACLE的安装目录(ORACLE_HOME)为D:\oracle\ora92,SID为ORADB,主机名为CHANET。
必要性
扩展后的PL/SQL语言已经集成了标准SQL,在效率和安全上非常适合设计Oracle数据库程序,但对于应用的某些功能,其它的程序设计语言比PL/SQL更适合,如:使用操作系统资源,C语言在计算和引用系统对象及使用设备上优于PL/SQL,而Java语言在网络上的应用优于PL/SQL。
如果在应用上要用到不适合用PL/SQL语言的话,这时就要使用其它语言进行编制,然后由PL/SQL作为外部例程进行调用。
在Oracle8之前的版本,PL/SQL和其它语言的唯一通信是借助于DBMS_PIPE和DBMS_ALERT包来实现,在使用之前必需建立一个OCI接口或预编译器编制的监护程序,使用比较复杂。外部例程的出现,只需在PL/SQL中建立一个函数映射到外部例程对应的函数,就像普通的PL/SQL函数使用一样,简化了使用过程。
基本原理
当引用外部C语言例程时,Oracle监听器将启动extproc进程,该进程将会动态地载入共享库(在Windows下称为动态链接库,即是DLL文件),进程起了一个缓冲的作用,当PL/SQL过程调用外部函数时,进程把命令发送到共享库,之后把结果返回给PL/SQL过程。
进程被调用后随着共享库的使用会话(session)而存在,如果调用完毕或者关闭数据库用户会话,extproc进程会自动关闭。
如下图1-1为调用外部例程的描述。
使用配置
在调用外部例程之前,必需进行如下设置:
·配置监听器。
·配置Net组件服务。
配置监听器,打开D:\oracle\ora92\network\admin\listener.ora 文件,修改文件参数。
其中有两部份参数对于使用外部例程是很重要的。
·(ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = extproc1))
设置基于IPC协议的外部例程
·(SID_DESC =(SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\ora92) (PROGRAM = extproc) )
记录数据库的相关属性,SID_NAME在默认的情况下是PLSExtproc。
配置Net组件服务,打开D:\oracle\ora92\network\admin\tnsnames.ora文件,把如下内容保存在该文件里。
重要参数说明:
·(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
·(CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO)
两设置必需与listener.ora里的一致。
重启监听器,并测试服务是否可用。
停止监听器:lsnrctl stop
启动监听器:lsnrctl start
测试服务是否可用:
已使用的参数文件:
已使用 TNSNAMES 适配器来解析别名
测试extproc进程是否正常:
4、使用COM对象说明
COM对象设计都会提供了三个基本操作给开发人员使用,分别为:获取属性值,设置属性值(只读属性除外),调用方法。Oracle数据库在Windows的平台下提供了操作COM对象的接口,属于C语言外部例程模式。
工作原理如下图:
在使用该功能之前,需明白如下内容:
1) 创建COM对象操作函数。
2)配置监听器。
在listener.ora文件里,添加如下内容,并重启监听器。
3) PL/SQL数据类型与对应的COM对象类型
表1-1数据类型比较
4) 函数说明。
表1-2函数说明
更多精彩内容
其他人还在看
VS2015连接Oracle数据库的详细步骤
这篇文章主要介绍了VS2015连接Oracle数据库的详细步骤,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
常用的Oracle doc命令(收藏)
这篇文章主要介绍了常用的Oracle doc命令(收藏)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
评论 0
收藏 0
赞 0
分享
ORACLE SQL语句优化技术要点解析
这篇文章主要介绍了ORACLE SQL语句优化技术的相关内容,小编觉得挺不错的,在这里分享给大家,需要的朋友可以参考下。
评论 0
收藏 0
赞 0
分享
ORACLE多条件统计查询的简单方法
这篇文章主要介绍了ORACLE多条件统计查询的简单方法,具有一定参考价值。这里给大家分享下,希望对大家有所帮助。
评论 0
收藏 0
赞 0
分享
ORACLE批量导入图片到BLOB字段代码示例
这篇文章主要介绍了ORACLE批量导入图片到BLOB字段代码示例,此代码示例是文章作者的项目源码,具有一定参考价值,需要的朋友可以了解下。
评论 0
收藏 0
赞 0
分享
PLSQL Developer登录的默认密码介绍
这篇文章主要介绍了PLSQL Developer登录的默认密码介绍,具有一定参考价值,需要的朋友可以了解下。
评论 0
收藏 0
赞 0
分享
Oracle数据行拆分多行方法示例
oracle数据库使用过程中,怎样将一行或者多行数据分割成需要的多行数据,本文我们就来看看具体方法,需要的朋友可以参考。
评论 0
收藏 0
赞 0
分享
Oracle表空间不足的两种解决办法
这篇文章主要介绍了Oracle表空间不足的两种解决办法,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
巧妙解决Oracle NClob读写问题(经验分享)
下面小编就为大家带来一篇巧妙解决Oracle NClob读写问题(经验分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
评论 0
收藏 0
赞 0
分享
oracle执行update语句时卡住问题分析及解决办法
这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值,需要的朋友可以了解。
评论 0
收藏 0
赞 0
分享
查看更多
网络赚钱
更多
从世界杯观赛看,“移动视频”就是个伪命题
网络公司的普通程序员如何利用QQ营销月赚万元
站长VS微商 你选择哪个?
创业者找投资需要想好的九个问题
什么样的网站赚钱 怎么赚钱?
电脑系统下载类网站是怎么赚钱的?浅析电脑系统下载类网站的赚钱方式
站长故事
更多
喜马拉雅创始人自述:网络电台一年半获取7000万用户
一个年入80W的96年草根站长
阿里IPO在即,看阿里与京东战略和经营之比
浅析网站运营失败:你除了报怨还学会了什么
创业失败:一个屌丝站长4年互联网的辛酸经历
八零后站长们:我们都是“囧”的一代