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


Posted in PHP onJanuary 08, 2017

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,如果是其它类型就要指明

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

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

PHP 相关文章推荐
PHP中基本符号及使用方法
Mar 23 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
TP3.2框架分页相关实现方法分析
Jun 03 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 #PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 #PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 #PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 #PHP
Yii框架表单提交验证功能分析
Jan 07 #PHP
Yii框架弹出框功能示例
Jan 07 #PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 #PHP
You might like
php程序之die调试法 快速解决错误
2009/09/17 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHP与以太坊交互详解
2018/08/24 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
微信小程序开发探究
2016/12/27 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
angular2实现统一的http请求头方法
2018/08/13 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python 画函数曲线示例
2019/12/04 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
介绍一下Java的事务处理
2012/12/07 面试题
黄河的主人教学反思
2014/02/07 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
辩论赛主持词
2014/03/18 职场文书
员工保密承诺书
2014/05/28 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
三方协议书
2015/01/27 职场文书
python实现网络五子棋
2021/04/11 Python
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang