用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 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
怎样在UNIX系统下安装MySQL
Oct 09 PHP
php URL验证正则表达式
Jul 19 PHP
php实现加减法验证码代码
Feb 14 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
php获取当前页面完整URL地址
Dec 30 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP常量define和const的区别详解
May 18 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下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
python获取外网IP并发邮件的实现方法
2017/10/01 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
基于python实现百度翻译功能
2019/05/09 Python
django实现用户注册实例讲解
2019/10/30 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
人力资源部门的主要职能
2014/02/22 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
户籍证明书标准模板
2014/09/10 职场文书
学生会个人总结范文
2015/02/15 职场文书
导游词之岳阳楼
2019/09/25 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL