用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简洁函数(PHP简单明了函数语法)
Jun 10 PHP
php获取字段名示例分享
Mar 03 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
PHP实现合并discuz用户
Aug 05 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
PHP array_reverse() 函数原理及实例解析
Jul 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
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
行政主管岗位职责
2013/11/18 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
董事长助理岗位职责
2014/02/18 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
违纪检讨书范文
2015/01/27 职场文书
护士自荐信怎么写
2015/03/06 职场文书
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏