php 访问oracle 存储过程实例详解
程序员文章站
2024-03-06 13:46:26
php 访问oracle 存储过程实例详解
比如我的本地oracle数据库有一个package,里面有一个存储过程:
create or replace pac...
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,如果是其它类型就要指明
入参传值比较简单,出参稍微复杂些,要指明长度。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!