오라클에서 사용할 수 있는 varchar2 타입의 텍스트는 최대 4000 Byte까지 입력가능하지요...
그러나 작성하고자 하는 프로그램의 목적에 따라 4000 Byte가 넘는 대용량의 텍스트 데이터를 테이블내에 입력해야할 필요가 생겼습니다. 하여 CLOB 형으로 선언을 한 필드 content에 INSERT쿼리를 이용해 사용자가 입력한 본문을 잘 입력하였습니다. 이때 ocinewdescriptor()와 ocibindbyname()함수를 이용했습니다.
즉, ocinewdescriptor()함수로 데이터를 저장할 CLOB형 데이터저장공간을 할당한 후 ocibindbyname()함수로 CLOB필드와 바인딩을 했습니다. 그리고나서 ocinewdescriptor()함수로 할당한 변수의 save() 메소드로 사용자가 입력한 값을 저장하였습니다.
문제는... !!!
이미 입력되어 있는 값을 UPDATE 쿼리로 갱신하고자 할 때 그방법을 모르겠네요...
ocibindbyname()과 ocinewdescriptor()함수를 이용하는거 같은데 어떻게 처리해야 할 지 모르겠습니다.
INSERT쿼리시에는 'returning 필드명 into 바인드변수'와 같은 쿼리문으로 바인딩을 하는데 UPDATE 쿼리시에는 이것이 안되는거 같아서요...
CLOB형의 필드값을 갱신하는데 한번 짚어주셨으면 합니다.
$query = "UPDATE md_medi_column SET subject='$subject',author='$author',au
thor_email='$author_email',bp_record='$bp_record',content=:content_clob,source=' $source' WHERE sid = $number";
$stmt = ociparse($conn,$query);
$content_clob = ocinewdescriptor($conn,OCI_D_LOB);
ocibindbyname($stmt,':content_clob',&$content,-1,OCI_B_CLOB);
ociexecute($stmt);
ocifreedesc($content_clob);
ocifreestatement($stmt);
ocilogoff($conn);
|