欢迎您来到懒之才-站长的分享平台!   学会偷懒,并懒出境界是提高工作效率最有效的方法!
首页 > 经验分享 > PHP > PHP调用Oracle的存储过程实现方法

PHP调用Oracle的存储过程实现方法

2018-06-19 449 收藏 0 赞一个 0 真差劲 0 去评论

存储过程很高端、大气、上档次,对于存储过程我一向的观点是支持使用,必竟我们追求数据存储的“速度和效率”,Oracle作为超专业级的数据库服务引擎,在效率上,如果一次需要做一系列SQL操作,则需要往返于PHP与ORACLE之间,不如把操作直接放到数据库,这样有效减少往返次数,增加效率。为了能让想了解存储过程的朋友便于理解,写了下面这个例子,先来看如何建立数据表和存储过程:

//在Oracle中建立一个供测试的数据表
CREATE TABLE TEST (
  ID        NUMBER(16)        NOT NULL,
  NAME      VARCHAR2(30)      NOT NULL,
  PRIMARY KEY (ID)
);
//插入一条数据
INSERT INTO TEST VALUES (5, 'PHP_BOOK');
//建立一个存储过程
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 = 5;
END PROC_TEST;

在PHP中调用,不多费话了,代码里都有注释的,聪明的你相信会看懂:

<?php
//建立数据库连接
$user = "test"; //数据库用户名
$password = "test"; //密码
$conn_str = "tnsname"; //连接串(cstr : Connection_STRing)
$remote = true //是否远程连接
if ($remote) {
  $conn = OCILogon($user, $password, $conn_str);
}
else {
  $conn = OCILogon($user, $password);
}
//设置绑定
$id = 5; //准备绑定的php变量 id
$name = ""; //准备绑定的php变量名
/* 调用存储过程的sql语句(sql_sp : SQL_StoreProcedure)
 *  语法:
 *  BEGIN 存储过程名([[:]参数]); END;
 *  加上冒号表示该参数是一个位置
*/
$sql_sp = "BEGIN PROC_TEST(:id, :name); END;";
$stmt = OCIParse($conn, $sql_sp);
//执行绑定
OCIBindByName($stmt, ":id", $id, 16);//参数说明:绑定php变量$id到位置:id,并设定绑定长度16位
OCIBindByName($stmt, ":name", $name, 30);
OCIExecute($stmt);
//结果
echo "name is : $name<br>";
?>


一、推荐使用迅雷或快车等多线程下载软件下载本站资源。

二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。

三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!

四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.

五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。

六、如需转载本站资源,请注明转载来自并附带链接

七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com

大家评论