php调用oracle带输出参数的存储过程
CREATE OR REPLACE PROCEDURE PROC_TEST ( p_id IN OUT NUMBER, p_name OUT VARCHAR2 ) AS BEGIN SELECT NAME INTO p_name FROM TEST WHERE ID = p_id; END PROC_TEST;
安装oracle扩展 安装方法可参考【Centos7 php7.3安装oracle扩展】
/** * php调用存储过程并处理返回值 */ public function testProcedure(){ //建立数据库连接 $conn = oci_connect('scott','scott','10.87.234.25/orcl','UTF8'); if(!$conn){ echo oci_error();exit; } $id = 5; //准备用以绑定的php变量 id $name = ""; //准备用以绑定的php变量 name/** 调用存储过程的sql语句(sql_sp : SQL_StoreProcedure) $sql_sp = "BEGIN PROC_TEST(:id, :name); END;";//Parse $stmt = OCIParse($conn, $sql_sp);//执行绑定 OCIBindByName($stmt, ":id", $id, 16); //参数说明:绑定php变量$id到位置:id,并设定绑定长度16位 OCIBindByName($stmt, ":name", $name, 30);//Execute OCIExecute($stmt);//结果 echo "name is : $name<br>"; oci_close($conn); exit; }