用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 相关文章推荐
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
php简单的会话类代码
Aug 08 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP dirname功能及原理实例解析
Oct 28 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 变量定义和变量替换的方法
2009/07/30 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php eval函数一句话木马代码
2015/05/21 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP反射实际应用示例
2019/04/03 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
工商管理自荐书
2014/07/06 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
超市工作总结范文2014
2014/12/19 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
2015年党小组工作总结
2015/05/26 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书