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.NET的入门教程
Oct 09 PHP
PHP网站基础优化方法小结
Sep 29 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
php写入txt乱码的解决方法
Sep 17 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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自动加载机制的深入分析
2013/06/08 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
webpack4打包vue前端多页面项目
2018/09/17 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
Python功能键的读取方法
2015/05/28 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
计算机求职信
2013/12/01 职场文书
会计专业自我鉴定
2014/02/10 职场文书
利群广告词
2014/03/20 职场文书
护士长竞聘书
2014/03/31 职场文书
小区推广策划方案
2014/06/06 职场文书
关于环保的活动方案
2014/08/25 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python