PDO 는 Oracle lob 필드 를 가 져 옵 니 다.데이터 양 이 너무 많아 서 꺼 낼 수 없 는 문제 해결 방법 입 니 다.

1712 단어 PDOOraclelob
우선,저장 프로시저 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;/길이 차단$tname = 'test';//조작 표 명$fname = '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 의 자 료 는 인터넷 에서 비교적 적 습 니 다.문 제 를 해결 할 수 있 는 것 이 더 많 지 않 습 니 다.보 내 서 여러분 과 공유 하 겠 습 니 다.분명 다른 좋 은 해결 방법 이 있 을 것 입 니 다.여러분 과 함께 토론 하 는 것 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기