用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 输出缓存详解
Jun 20 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php 缩略图实现函数代码
Jun 23 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP7常量数组用法分析
Sep 26 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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函数
2011/05/31 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
js断点调试经验分享
2017/12/08 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
vscode 远程调试python的方法
2017/12/01 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
专营店会计助理岗位职责
2013/11/29 职场文书
市场部管理制度
2014/02/02 职场文书
劳动竞赛口号
2014/06/16 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
商务经理岗位职责
2014/08/03 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android