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 分页分组类
Dec 10 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
php返回当前日期或者指定日期是周几
May 21 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
php生成高清缩略图实例详解
Dec 07 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
微信支付开发告警通知实例
Jul 12 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
thinkphp实现分页显示功能
Dec 03 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
python中将字典转换成其json字符串
2014/07/16 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
优秀工会工作者事迹材料
2014/06/02 职场文书
学校教师读书活动总结
2014/07/08 职场文书
环卫工人慰问信
2015/02/15 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers