#24278 [Com]: error while trying to save LOB
| From: | nirfri at hotmail dot com | Date: | Thu, 21 Aug 2003 10:02:09 +0000 |
| Subject: | #24278 [Com]: error while trying to save LOB | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-46409@lists.php.net to get a copy of this message | ||
ID: 24278
Comment by: nirfri at hotmail dot com
Reported By: trent at low dot ru
Status: Open
Bug Type: OCI8 related
Operating System: Linux, Win32
PHP Version: 4CVS-2003-08-15 (stable)
New Comment:
nope.. doesnt work,
my mistake.
Nir
Previous Comments:
------------------------------------------------------------------------
[2003-08-18 10:06:43] nirfri at hotmail dot com
After Working on this annoying problem for 2 days in a row, Finally I
found the solution. Thanks to ViVisimo.com :))
look in : <A
HREF="http://www.faqchest.com/prgm/oracle-l/ora-01/ora-0109/ora-010939/ora01091712_19451.html">http://www.faqchest.com/prgm/oracle-l/ora-01/ora-0109/ora-010939/ora01091712_19451.html
</A>
for an example.
in short.
You need to edit your procedure so it will createtemporarly the clob
before you can do anything with it.
<B>DBMS_LOB.CREATETEMPORARY(myclob1,FALSE,DBMS_LOB.CALL);</B>
HtH,
Nir Friedman
------------------------------------------------------------------------
[2003-06-21 10:28:43] trent at low dot ru
Description:
------------
I got these errors while trying to inputing string to LOB using LOB's
method save(); :
Warning: save() [function.save.html]: OCILobWrite: OCI_INVALID_HANDLE
in /www/sample.php on line 15
Warning: load() [function.load.html]: OCILobGetLength:
OCI_INVALID_HANDLE in /www/sample.php on line 19
This was tested with:
4.3.1-win32
4.3.1-linux
Latest snapshot on Linux.
Note: in oracle function there is in/out parameter used.
Additional exception from Oracle: ORA-22275: invalid LOB locator
specified.
Reproduce code:
---------------
//logging in
$conn = OCILogon('user', 'pass', 'srvname');
//creating new LOB locator
$clob = OCINewDescriptor($conn, OCI_D_LOB);
$sql = 'begin :ret:=test(lob_object=>:lob_object_param); end;';
//parsing query - ok
$stmt = OCIParse($conn, $sql);
//binding variables - ok
OCIBindByName($stmt, ':lob_object_param', &$clob, -1, OCI_B_CLOB);
OCIDefineByName($stmt, ':lob_object_param', $clob, OCI_B_CLOB);
OCIBindByName($stmt, ':ret', $return, 4);
OCIExecute($stmt, OCI_DEFAULT);
if($clob->save($param)) { // Warning: OCILobWrite: OCI_INVALID_HANDLE
in sample.php on line 15
OCICommit($conn); // this warning appears only when using method
save(); of LOB locator
}
print $clob->load(); // Warning: OCILobGetLength: OCI_INVALID_HANDLE
in sample.php on line 19
// when using load method in LOB locator
$clob->free();
OCIFreeStatement($stmt);
Expected result:
----------------
I'm trying to save string as CLOB using Oracle function.
I do expect it to work fine =)
Maybe I'm doing something extremely wrong?
If so, please, correct me.
Thanx in advance.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=24278&edit=1