当前位置:首页 > PHP教程 > PHP常见问题

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

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

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



【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!