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

Reply via email to