用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 相关文章推荐
PHP编程网上资源导航
Oct 09 PHP
php二分查找二种实现示例
Mar 12 PHP
YII实现分页的方法
Jul 09 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 PHP
PHP实现随机发扑克牌
Apr 22 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
一道python走迷宫算法题
2018/01/22 Python
pycham查看程序执行的时间方法
2018/11/29 Python
pandas 空数据处理方法详解
2019/11/02 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
苹果香港官方商城:Apple香港
2016/09/14 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
有关打架的检讨书
2014/01/25 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
宿舍管理制度范本
2015/08/07 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python