PHP调用Oracle的存储过程实现方法
存储过程很高端、大气、上档次,对于存储过程我一向的观点是支持使用,必竟我们追求数据存储的“速度和效率”,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
大家评论
站长推荐
点击排行
- 1CSS控制文字在Div最底部显示
- 2Thinkphp5如何配置IP+端口访问项目模块
- 3elementUI el-dialog弹框居中
- 4教你如何搭建及优化站点
- 5国内互联网视频行业运营分析
- 6service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 7CSS实现悬浮顶部的Div工具栏
- 8记一次Thinkphp5.1框架mysql数据库崩溃(SQLSTATE [08004] Too many connections)
- 9连接SQL Server数据库提示:Login failed for user 'sa'错误的解决方案
- 10Thinkphp3.2在centos7上设置计划任务的方法