用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也可以?成Shell Script
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
PHP远程采集图片详细教程
Jul 01 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php读取csc文件并输出
May 21 PHP
php实现的mongodb操作类
May 28 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP实现微信对账单处理
Oct 01 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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数据加密详解
2013/06/18 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python常用库推荐
2016/12/04 Python
python人民币小写转大写辅助工具
2018/06/20 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
自荐信的五个重要部分
2013/10/29 职场文书
店长助理岗位职责
2013/12/13 职场文书
委托收款证明
2015/06/23 职场文书
计算机教师工作总结
2015/08/13 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
vue自定义右键菜单之全局实现
2022/04/09 Vue.js