用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默认安装产生系统漏洞
Oct 09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php生成静态页面的简单示例
Apr 17 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 PHP
PHP自毁程序(慎用)
Jul 09 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 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
织梦模板标记简介
2007/03/11 PHP
PHP 变量类型的强制转换
2009/10/23 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
公司合作意向书
2014/04/01 职场文书
三峡导游词
2015/01/31 职场文书
婚庆主持词大全
2015/06/30 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
诚信考试主题班会
2015/08/17 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL