用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 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
PHP 数组实例说明
Aug 18 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 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
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php显示时间常用方法小结
2015/06/05 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
jquery $.ajax入门应用二
2008/11/19 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
python使用knn实现特征向量分类
2018/12/26 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
python 自动识别并连接串口的实现
2021/01/19 Python
python 制作磁力搜索工具
2021/03/04 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
Puma印度官网:德国运动品牌
2019/10/06 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
工伤赔偿协议书
2014/04/15 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫