PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法

_你若走我不留

_你若走我不留

2016-02-19 09:26

有了下面这个PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法教程,不懂PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法的也能装懂了,赶紧get起来装逼一下吧!
首先,创建一个存储过程 get_clob:
t_name:要查询的表名;f_name:要查询的字段名;u_id:表的主键,查询条件;l_pos:截取的开始位置; l_amount :截取长度;
CREATE OR REPLACE PROCEDURE get_clob(t_name in varchar2, f_name in varchar, u_id in integer, l_pos in integer, l_amount in BINARY_INTEGER, ReturnValue out varchar2) is
rule_xml clob;
l_buffer varchar2(3999);
l_amount_ BINARY_INTEGER;
begin
execute immediate 'select ' ||f_name|| ' from ' ||t_name|| ' where id=:1' into rule_xml using u_id;
l_amount_:=l_amount;
DBMS_LOB.read(rule_xml, l_amount_, l_pos, l_buffer);
ReturnValue := l_buffer;
end get_clob;
然后是php的处理程序:
$content = "";
$num = 0;//clob字段长度
$stmt = $oracle-prepare("select length(content) as num from test where id = $id");
if ($stmt-execute()) { //zjh为查询的条件
$row = $stmt-fetch();
$num = $row['NUM'];
}
$start = 1;//初始化开始位置
$len = 2500;//截取长度
$t_name = 'test';//操作表名
$f_name = 'content';//需要查询的clob字段名
while ($start = $num){
$ret='';
$sql = "begin get_clob(?,?,?,?,?,?); end;";
$stmt = $oracle-prepare($sql);
$stmt-bindParam(1, $t_name, PDO::PARAM_STR, 100);
$stmt-bindParam(2, $f_name, PDO::PARAM_STR, 100);
$stmt-bindParam(3, $id, PDO::PARAM_STR, 100);
$stmt-bindParam(4, $start, PDO::PARAM_STR, 100);
$stmt-bindParam(5, $len, PDO::PARAM_STR, 100);
$stmt-bindParam(6, $ret, PDO::PARAM_STR, 5000);
$stmt-execute();
$content .= $ret;
$start=$start+$len;
}
$oracle = null;
以上就是完整的解决办法,这个方法不是俺的首创,做过pb项目的人大多数应该比较熟悉这种操作。
php操作Oracle的资料网上还是比较少的,能解决问题的就更不多了,发出来跟大家分享一下,肯定还有其他比较好的解决办法,欢迎跟大家一起探讨。
展开更多 50%)
分享

猜你喜欢

PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法

编程语言 网络编程
PDO取Oracle lob大字段当数据量太大无法取出的问题的解决办法

较长text型数据无法在Asp页面中取出的解决办法

ASP
较长text型数据无法在Asp页面中取出的解决办法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle数据库中的数据出错的解决办法

电脑网络
Oracle数据库中的数据出错的解决办法

JQery jstree 大数据量问题解决方法

Web开发
JQery jstree 大数据量问题解决方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ORACLE920与ASP的连接问题的解决办法

ASP
ORACLE920与ASP的连接问题的解决办法

战网无法安装的解决办法

电脑网络
战网无法安装的解决办法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

基于Protobuf C++ serialize到char*的实现方法分析

基于Protobuf C++ serialize到char*的实现方法分析

Open and Print a Word Document

Open and Print a Word Document
下拉加载更多内容 ↓