用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.MVC的模板标签系统(五)
Sep 05 PHP
example1.php
Oct 09 PHP
PHP脚本的10个技巧(7)
Oct 09 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 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中session定期自动清理的方法
2015/11/12 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
在windows系统中实现python3安装lxml
2016/03/23 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python实现登陆文件验证方法
2018/10/06 Python
django中间键重定向实例方法
2019/11/10 Python
基于Python fminunc 的替代方法
2020/02/29 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
《英英学古诗》教学反思
2014/04/11 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
使用Redis做预定库存缓存功能
2022/04/02 Redis
Python采集股票数据并制作可视化柱状图
2022/04/04 Python