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

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

01 //在Oracle中建立一个供测试的数据表
02 CREATE TABLE TEST (
03   ID        NUMBER(16)        NOT NULL,
04   NAME      VARCHAR2(30)      NOT NULL,
05   PRIMARY KEY (ID)
06 );
07 //插入一条数据
08 INSERT INTO TEST VALUES (5, 'PHP_BOOK');
09 //建立一个存储过程
10 CREATE OR REPLACE PROCEDURE PROC_TEST (
11   p_id IN OUT NUMBER,
12   p_name OUT VARCHAR2
13 AS
14 BEGIN
15   SELECT NAME INTO p_name
16     FROM TEST
17     WHERE ID = 5;
18 END PROC_TEST;

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

01 <?php
02 //建立数据库连接
03 $user "test"//数据库用户名
04 $password "test"//密码
05 $conn_str "tnsname"//连接串(cstr : Connection_STRing)
06 $remote = true //是否远程连接
07 if ($remote) {
08   $conn = OCILogon($user$password$conn_str);
09 }
10 else {
11   $conn = OCILogon($user$password);
12 }
13 //设置绑定
14 $id = 5; //准备绑定的php变量 id
15 $name ""//准备绑定的php变量名
16 /* 调用存储过程的sql语句(sql_sp : SQL_StoreProcedure)
17  *  语法:
18  *  BEGIN 存储过程名([[:]参数]); END;
19  *  加上冒号表示该参数是一个位置
20 */
21 $sql_sp "BEGIN PROC_TEST(:id, :name); END;";
22 $stmt = OCIParse($conn$sql_sp);
23 //执行绑定
24 OCIBindByName($stmt":id"$id, 16);//参数说明:绑定php变量$id到位置:id,并设定绑定长度16位
25 OCIBindByName($stmt":name"$name, 30);
26 OCIExecute($stmt);
27 //结果
28 echo "name is : $name<br>";
29 ?>




更多文章阅读=============================================================================================


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值