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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
功能强大的php分页函数
Jul 20 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
PHP单例模式简单用法示例
Jun 23 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 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 eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php调用c接口无错版介绍
2014/03/11 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Django REST framework内置路由用法
2019/07/26 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python的数学算法函数及公式用法
2020/11/18 Python
自我鉴定写作要点
2014/01/17 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
家具商场的活动方案
2014/08/16 职场文书
优秀班主任材料
2014/12/16 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
病房管理制度范本
2015/08/06 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS