note 26305 modified in function.ocinewdescriptor by sixd

From: Date: Thu, 08 Oct 2009 19:26:55 +0000
Subject: note 26305 modified in function.ocinewdescriptor by sixd
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-161546@lists.php.net to get a copy of this message
Two examples of retrieving CLOBs from the database. They are almost identical. The first is using a package(and cursor) which is how I interface to Oracle at work, and the second is using straight SQL, which most people post examples in. I also convert the case from upper to lower, since that is how I prefer to work with assoc arrays... Instead of using the get_class() function you could use the OCIColumnType() function which (in this case) would return 'CLOB' as a result... /** * Example 1 * * Using a PL/SQL package and cursor * */ $cursor=':p_cur'; $sql2="begin clobPackage.getClob($cursor); end;"; $curs=OCINewCursor($conn); $stmt=OCIParse($conn,$sql2); OCIBindByName($stmt,$cursor,&$curs,-1,OCI_B_CURSOR); OCIExecute($stmt,OCI_DEFAULT); OCIExecute($curs,OCI_DEFAULT); $x=0; while(OCIFetch($curs)){ $cols=OCINumCols($curs); for($i=1;$i<=$cols;$i++){ $column_name=OCIColumnName($curs,$i); if(is_object($tmp=OCIResult($curs,$i))&&get_class($tmp)=='OCI-Lob'){ $column_value=$tmp->load(); }else{ $column_value=$tmp; } $result[$x][strtolower($column_name)]=trim($column_value); } $x++; } OCICommit($conn); /** * Example 2 * * Using a SELECT * */ $query="SELECT a_num, a_clob FROM clob_test"; $stmt=OCIParse($conn,$query); OCIExecute($stmt,OCI_DEFAULT); $x=0; while(OCIFetch($stmt)){ $ncols=OCINumCols($stmt); for($i=1;$i<=$ncols;$i++){ $column_name=OCIColumnName($stmt,$i); if(is_object($tmp=OCIResult($curs,$i))&&get_class($tmp)=='OCI-Lob'){ $column_value=$tmp->load(); }else{ $column_value=$tmp; } $result[$x][strtolower($column_name)]=trim($column_value); } $x++; } OCICommit($conn); I hope someone finds this useful. Cheers, Keith. --was-- Two examples of retrieving CLOBs from the database. They are almost identical. The first is using a package(and cursor) which is how I interface to Oracle at work, and the second is using straight SQL, which most people post examples in. I also convert the case from upper to lower, since that is how I prefer to work with assoc arrays... Instead of using the get_class() function you could use the OCIColumnType() function which (in this case) would return 'CLOB' as a result... /** * Example 1 * * Using a PL/SQL package and cursor * */ $cursor=':p_cur'; $sql2="begin clobPackage.getClob($cursor); end;"; $curs=OCINewCursor($conn); $stmt=OCIParse($conn,$sql2); OCIBindByName($stmt,$cursor,&$curs,-1,OCI_B_CURSOR); OCIExecute($stmt,OCI_DEFAULT); OCIExecute($curs,OCI_DEFAULT); $x=0; while(OCIFetch($curs)){ $cols=OCINumCols($curs); for($i=1;$i<=$cols;$i++){ $column_name=OCIColumnName($curs,$i); if(is_object($tmp=OCIResult($curs,$i))&&get_class($tmp)=='OCI-Lob'){ $column_value=$tmp->load(); }else{ $column_value=$tmp; } $result[$x][strtolower($column_name)]=trim($column_value); } $x++; } OCICommit($conn); /** * Example 2 * * Using a SELECT * */ $query="SELECT a_num, a_clob FROM clob_test"; $stmt=OCIParse($conn,$query); OCIExecute($stmt,OCI_DEFAULT); $x=0; while(OCIFetch($stmt)){ $ncols=OCINumCols($stmt); for($i=1;$i<=$ncols;$i++){ $column_name=OCIColumnName($stmt,$i); if(is_object($tmp=OCIResult($curs,$i))&&get_class($tmp)=='OCI-Lob'){ $column_value=$tmp->load(); }else{ $column_value=$tmp; } $result[$x][strtolower($column_name)]=trim($column_value); } $x++; } OCICommit($conn); I hope someone finds this useful. Cheers, Keith. http://php.net/manual/en/function.ocinewdescriptor.php

« previous php.notes (#161546) next »