php 访问oracle 存储过程实例详解

php 访问oracle 存储过程实例详解

比如我的本地Oracle数据库有一个package,里面有一个存储过程:

create or replace package PKG_TRANS_REL is

 -- Author : test
 -- Created :
 -- Purpose : test

 -- Public type declarations
 PKG_NAME varchar2(20) := 'PKG_TRANS_REL';
 --存储过程,测试用
 procedure pro_GC_withdraw(in_merch_no   in varchar2,
              in_withdraw_amt in number,
              out_result   out number,
              out_errmsg   out varchar2);
end PKG_TRANS_REL;

包名是PKG_TRANS_REL,存储过程是pro_GC_withdraw,这个存储过程有四个参数,两个入参,两个出参。

在PHP中通过pdo调用示例:

  $this->_pdo = new PDO(PDO_DB_DNS, PDO_DB_USER, PDO_DB_PASSWORD);
  $call = "CALL PKG_TRANS_REL.pro_GC_withdraw(?,?,?,?)";

  try{
      $stmt = $this->_pdo->prepare($call);

      $stmt->bindParam(1, $merch_no);
      $stmt->bindParam(2, $amount, PDO::PARAM_INT);

      $stmt->bindParam(3, $result, PDO::PARAM_INT, 4);
      $stmt->bindParam(4, $error_msg, PDO::PARAM_STR, 64);

      $stmt->execute();

    }catch (PDOException $e)
    {
      $msg = 'SQL:'.$e->getMessage();
      $msg = iconv('GBK','UTF-8',$msg);
      user_dump('SQL:'.$msg);
      return false;
    }

    ...

bindParam第三个参数默认是PDO::PARAM_STR,如果是其它类型就要指明

入参传值比较简单,出参稍微复杂些,要指明长度

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 操作Oracle的php类

    <? //[警告]:未经许可请勿随便修改 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ //   // [文件名]:                c_ora_db.inc

  • PHP处理Oracle的CLOB实例

    本文实例简述了PHP处理Oracle的CLOB的方法.分享给大家供大家参考.具体方法如下: 1. 写入数据   在使用PDO的预处理方法时,如果使用bindParam()等而不指定字段的数据类型或使用execute(),PDO都会默认为string类型,并且限定一个默认长度 所以在存clob类型字段时必须使用bindParam()或bindValue()等,并指定字符串长度,例如: 复制代码 代码如下: $pdo -> bindParam(':clobData', $clobData, PDO:

  • php+oracle 分页类

    example.php 复制代码 代码如下: <?php $conn = ociplogon("test","123456","test123"); include_once "pager.inc.php"; ?> 复制代码 代码如下: <?php /** 分页测试开始 */ // {{{ 初始分页对象 $pager = new pager(); /** 将 select id,name,age from t

  • 用PHP调用Oracle存储过程的方法

    但是使用存储过程至少有两个最明显的优点:速度和效率.使用存储过程的速度显然更快.在效率上,如果应用一次需要做一系列sql操作,则需要往返于php与oracle,不如把该应用直接放到数据库方以减少往返次数,增加效率.但是在internet应用上,速度是极度重要的,所以很有必要使用存储过程.偶也是使用php调用存储过程不久,做了下面这个列子. 代码 复制代码 代码如下: //建立一个test表 create table test ( id number(16) not null, name varc

  • Linux+php+apache+oracle环境搭建之CentOS下源码编译安装PHP

    首先需要安装下面几个安装包,可以在CD-ROM数据源里找到以下安装包yum安装 yum install perl* freetype libpng* libxm2 libxm2-devel curl curl-devel libjpeg* 手动下载安装 jpegsrc.v8c.tar libmcrypt-2.5.8.tar.gz 安装 jpegsrc # tar -xvzf jpegsrc.v8c.tar # cd jpeg-8c # ./configure --prefix=/usr/loca

  • PHP下的Oracle客户端扩展(OCI8)安装教程

    最近的项目需要用php访问oracle数据库,不得不在linux下给php安装oci8扩展.php也可以使用pdo访问oracle数据库,但还是需要安装客户端. 首先到oracle官网的这个页面下载相关的文件,注意要连数据库服务器的版本,一定要对应,否则安装成功也会连不上,同时也要区分32位.64位服务器,比如我要连的数据库服务器是oracle10.2.0.4,64位主机,那么我要下载下面三个文件: 复制代码 代码如下: oracle-instantclient-basic-10.2.0.4-1

  • ThinkPHP 连接Oracle数据库的详细教程[全]

    一. 操作环境搭建 系统:Windows7 旗舰版 64位PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24  32位版下载地址:http://www.wampserver.com/en/ ThinkPHP:3.0正式版下载地址:http://thinkphp.cn/down.html Oracle:Orcale_11gR2  32位版下载地址:http://www.oracle.com/technetwork/cn/indexes/dow

  • 用PHP调用Oracle存储过程

    PHP程序访问数据库,完全可以使用存储过程,有人认为使用存储过程便于维护不过仁者见仁,智者见智,在这个问题上,偶认为使用存储过程意味着必须要DBA和开发人员更紧密配合,如果其中一方更变,则显然难以维护.但是使用存储过程至少有两个最明显的优点:速度和效率.使用存储过程的速度显然更快.在效率上,如果应用一次需要做一系列SQL操作,则需要往返于PHP与ORACLE,不如把该应用直接放到数据库方以减少往返次数,增加效率.但是在INTERNET应用上,速度是极度重要的,所以很有必要使用存储过程.偶也是使用

  • 用PHP连接Oracle数据库

    通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据.MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程.MySQL是免费的,这一点也许就吸引了不少人.由于其广泛应用,我就不想在这里赘述MySQL的使用方法了.Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接.我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围. PHP提供了两套函数与Oracle连接,分别

  • php连接oracle数据库及查询数据的方法

    本文实例讲述了php连接oracle数据库及查询数据的方法.分享给大家供大家参考.具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可. php支持oracle连接函数 php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号,重启apache就可以了,如果不行

随机推荐