`
leon1509
  • 浏览: 538450 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)通过PL/SQL访问WebService

阅读更多
转自:http://hi.baidu.com/h_sn999/blog/item/2d44c3cd4e49e2430eb345f4.html

教你怎么通过PL/SQL访问到Web Services

在Web Services红得发紫的今天,到处都在谈论和使用Web Services;当然,其中有不小一部分是属于业界炒作。Oracle也始终走在技术的最前沿,早在9i时代就发布了扩展包来支持PL/SQL访问Web Services,并且在Oracle 10g版本中使得该功能变得更加强大;这都源于引入了UTL_DBWS包,其实他是封装了JPublisher,使得PL/SQL研发者只需要使用简单的几个API就能调用Web Services了。


下面我将通过一个实例向你展示怎么通过PL/SQL调用Web Services,本文的重点是PL/SQL调用Web Services实现上,对于怎么发布Web Services,你能参考本人的另一篇基础性文章《用OC4J和Axis构建Web Services》或其他参考资料。



首先,我们来搭建运行环境吧,你得从Oracle OTN下载并安装Oracle Database(企业版、标准版、个人版均可,但切勿安装快捷版,因为他没有提供sqlj组件及相关命令)。如果你已安装好该数据库,可跳过该步骤。



然后,需要下载对应版本的UTL_DBWS:



Pre 10g: dbws-callout-utility.zip 10g: dbws-callout-utility-10R2.zip

下载完成后,需要解压该文件到/sqlj/lib目录下,我们还需要使用loadjava将这些jar文件加载到SYS schema中,供所有用户使用该扩展包,命令如下:



<oracle_install_dir>/bin/loadjava -u sys/ password -r -v -f -s -grant public -noverify -genmissing <oracle_install_dir>/sqlj/lib /dbwsclient.jar


其实在Oracle的文件中是声称10g是自带UTL_DBWS包的,不过我下载最新的Oracle并完全安装后,也没有发现UTL_DBWS的半点踪影,也只好自己拷贝并执行Loadjava了。



好了,目前万事俱备,只剩写程式测试了,在编码测试之前,我们假设你已将《用OC4J和Axis构建Web Services》文章里hellows已部署好了,并能正常的调用sayHello方法了;当然,你发布其他的Web Services服务也同样可行的。下面我们就创建一个function来进行测试,测试代码如下:


CREATE OR REPLACE FUNCTION Call_Sayhello(Usernameinvarchar2) RETURN VARCHAR2 AS
  l_Serviceutl_Dbws.Service          ;
  l_Call                              Utl_Dbws.Call;
  l_Result                            Anydata;
  l_Wsdl_Urlvarchar2                 (1024);
  l_Service_Namevarchar2             (200);
  l_Operation_Namevarchar2           (200);
  l_Input_Paramsutl_Dbws.Anydata_List;
BEGIN
  l_Wsdl_Url := 'http://Localhost:8888/Hellows/Helloservice?Wsdl';
  l_Service_Name := 'helloservice';
  l_Operation_Name := 'sayhello';
  l_Service := Utl_Dbws.Create_Service(Wsdl_Document_Location => Urifactory.Geturi(l_Wsdl_Url), Service_Name => l_Service_Name);
  l_Call := Utl_Dbws.Create_Call(Service_Handle => l_Service, Port_Name => NULL, Operation_Name => l_Operation_Name);
  l_Input_Params(1) := Anydata.Convertvarchar2(Username);
  l_Result := Utl_Dbws.Invoke(Call_Handle => l_Call, Input_Params => l_Input_Params);
  Utl_Dbws.Release_Call(Call_Handle => l_Call);
  Utl_Dbws.Release_Service(Service_Handle => l_Service);
  RETURN Anydata.Accessvarchar2(l_Result);
EXCEPTION
  WHEN OTHERS THEN
    RETURN NULL;
END Call_Sayhello;


测试结果如下:




  • 大小: 3.4 KB
分享到:
评论

相关推荐

    plsql调用webservice.rar

    在IT行业中,PL/SQL是Oracle数据库的一种编程语言,它扩展了SQL的语法,使得开发者可以编写复杂的存储过程、函数和触发器等。本话题主要关注如何在PL/SQL环境中调用Web服务,即Web Service。Web Service是一种基于...

    oracle plsql 通过utl_http调用 webservice

    Oracle PL/SQL是一种在Oracle数据库中编写存储过程和函数的语言,它结合了SQL的数据库操作能力和PL/SQL的编程灵活性。在本示例中,我们将深入探讨如何利用UTL_HTTP包来调用Web Service,这是一个非常实用的功能,...

    sql调用webservice

    在Oracle中,可以编写如下PL/SQL代码: ```sql DECLARE l_http_request UTL_HTTP.REQ; l_xml_response CLOB; BEGIN l_http_request := UTL_HTTP.BEGIN_REQUEST('http://example.com/webservice.asmx/Method', '...

    ebs发布webservice详解

    发布Web服务涉及多个阶段,包括创建PL/SQL包、配置Oracle Integration Repository(OIR)、以及在EBS环境中进行相应的设置。 #### 步骤一:创建PL/SQL包 首先,需要创建一个PL/SQL包,该包将封装EBS中的业务逻辑并...

    Oracle WebService 调用 封装

    在Oracle数据库环境中,WebService调用通常涉及到将外部Web服务接口集成到PL/SQL代码中,以便在数据库端执行远程操作。"Oracle WebService调用封装为PackageBody"这个标题表明我们将探讨如何创建一个PL/SQL包体...

    从PLSQL调用web services实例源码

    在PL/SQL中调用Web服务时,我们可能需要编写一个Java类,利用AXIS2库创建Web服务客户端,然后在PL/SQL中通过Java存储过程调用这个类。 下面是一个简单的步骤概述: 1. **准备Java环境**:确保Oracle数据库已经启用...

    详细的sql调用webservice.rar

    可以使用这些包结合PL/SQL来调用Web服务。首先,使用`DBMS_XMLGEN`生成XML请求,然后通过HTTP包发送请求并接收响应。 3. **MySQL中的Web服务调用**:MySQL自身并不支持直接调用Web服务,但可以通过存储程序调用外部...

    EBS WEBSERVICE接口简单部署

    总结来说,部署EBS WebService接口涉及到PL/SQL包的编写、文件的上传与转换、数据加载、WSDL的生成和部署,以及接口测试等多个环节。理解并熟练掌握这些步骤对于成功实现EBS与其他系统的集成至关重要。在整个过程中...

    oracle webservice实例

    在 PL/SQL 中,可以使用 XMLType 类型和相关函数处理 XML。 **源码** 在 Java 中,调用 Web Service 的代码可能如下: ```java WebServiceProxy proxy = new WebServiceProxy(); // 生成的代理类 proxy.set...

    oracle触发器加载java文件访问webservice

    Java代码通常存储在数据库的BLOB或CLOB列中,或者作为PL/SQL包的一部分。当触发器被触发时,它会读取并执行这些Java代码。这使得我们可以利用Java的强大功能,比如处理复杂的数据转换、调用Web服务等。 Web服务是一...

    oracle调用webService

    前面准备工作做好之后,如果未发现 UTL_DBWS(可以在 PL/SQL 中敲入 sys. 若未有 utl_dbws 显示,则需要进行初始化),需要运行之前下载的包中 dbws-callout-utility-10131\sqlj\lib\ utl_dbws_body.sql 及 utl_dbws...

    OracleEBS-WebService开发笔记.pdf

    - **PL/SQL 部署 WebService**:使用 PL/SQL 语言部署 WebService。 - **创建 Package**:定义 WebService 的功能。 - **创建 WebService**:具体实施 WebService 的开发工作。 - **部署 WebService**:将开发...

    oracle调用webservice接口地址demo

    dbms_output.put_line('PL/SQL DII client return: ' || retx_string); -- 返回结果 RETURN ANYDATA.ACCESS_VARCHAR2(retx); EXCEPTION WHEN OTHERS THEN RETURN substr(sqlerrm, 0, 2000); END FUNC_...

    oracle传入一个字符串,调用webservice

    - **Oracle存储过程**:Oracle数据库中的一种程序单元,可以包含复杂的SQL语句及PL/SQL控制结构,用于执行特定任务或逻辑。 - **UTL_HTTP包**:Oracle提供的一个工具包,用于处理HTTP请求和响应,支持GET和POST方法...

    oracle入门系列.docx

    - **PL/SQL编程**:学习使用PL/SQL语言编写存储过程、触发器等,以提高代码复用性和封装性。 - **数据库配置与管理**:掌握Oracle数据库的安装、配置、管理和维护等技能。 #### 二、Oracle数据库基础知识 **2.1 ...

    oracle 调用webservice

    3. **配置Oracle数据库连接**:在Oracle中,你可以使用PL/SQL或Java存储过程来调用Web Service。确保数据库已启用Java支持,并配置好相应的JDBC驱动和网络连接。 4. **编写PL/SQL调用Web Service**:如果你选择PL/...

    通过Web服务连接Oracle数据库.rar

    1. **配置Oracle数据库**:确保Oracle数据库已启用PL/SQL Gateway,这是OWSM的一部分,它允许通过HTTP或HTTPS协议调用PL/SQL代码。在数据库服务器上安装并配置Oracle Application Server或者Oracle WebLogic Server...

    Java面试题

    以上是根据提供的文件内容中包含的知识点进行的详细解读,涵盖XML解析技术、HTML5的新特性、PL/SQL编程、HTTP协议及安全、Tomcat服务器优化、MyBatis/iBatis的使用和区别以及WebService的相关概念和技术。通过学习...

Global site tag (gtag.js) - Google Analytics