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


Posted in PHP onSeptember 12, 2008

但是使用存储过程至少有两个最明显的优点:速度和效率。使用存储过程的速度显然更快。在效率上,如果应用一次需要做一系列sql操作,则需要往返于php与oracle,不如把该应用直接放到数据库方以减少往返次数,增加效率。但是在internet应用上,速度是极度重要的,所以很有必要使用存储过程。偶也是使用php调用存储过程不久,做了下面这个列子。

代码

//建立一个test表 

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 = "scott"; //数据库用户名 

$password = "tiger"; //密码 

$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变量 name 

/** 调用存储过程的sql语句(sql_sp : sql_storeprocedure) 

* 语法: 

* begin 存储过程名([[:]参数]); end; 

* 加上冒号表示该参数是一个位置 

**/ 

$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>"; 

?>
PHP 相关文章推荐
我常用的几个类
Oct 09 PHP
PHP5 安装方法
Jan 15 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
PHP CURL 多线程操作代码实例
May 13 PHP
php根据生日计算年龄的方法
Jul 13 PHP
PHP实现合并discuz用户
Aug 05 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php5新改动之短标记启用方法
Sep 11 #PHP
php5 pdo新改动加载注意事项
Sep 11 #PHP
PHP常用函数小技巧
Sep 11 #PHP
PHP下10件你也许并不了解的事情
Sep 11 #PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 #PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 #PHP
Zend Guard一些常见问题解答
Sep 11 #PHP
You might like
基于mysql的论坛(1)
2006/10/09 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python画图的函数用法以及技巧
2019/06/28 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Python实现京东抢秒杀功能
2021/01/25 Python
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
外贸销售员求职的自我评价
2013/11/23 职场文书
小区门卫值班制度
2014/01/24 职场文书
《草原》教学反思
2014/02/15 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
公司保密管理制度
2015/08/04 职场文书
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers