ID: 38161 Comment by: cjbj at hotmail dot com Reported By: a dot bodemer at brillux dot de Status: Feedback Bug Type: OCI8 related Operating System: Linux x86 PHP Version: 5.1.4 New Comment:
Tony you shouldn't need a stack dump for this. Just try a var_dump($returnValue) at the end of the script. Because no value has been returned in the variable it is being treated as a 64K string and printing garbage. The workaround for users is to make sure that the PL/SQL block always sets variable values in all possible code paths. Something like: $query= "declare n_status NUMBER(2); begin :retValue := 0; -- set default value n_status := 1 ; IF :n_status = 0 THEN :retValue := :n_status; END IF; end;"; Previous Comments: ------------------------------------------------------------------------ [2006-07-20 15:48:02] [EMAIL PROTECTED] Thank you for this bug report. To properly diagnose the problem, we need a backtrace to see what is happening behind the scenes. To find out how to generate a backtrace, please read http://bugs.php.net/bugs-generating-backtrace.php for *NIX and http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32 Once you have generated a backtrace, please submit it to this bug report and change the status back to "Open". Thank you for helping us make PHP better. ------------------------------------------------------------------------ [2006-07-20 15:05:00] a dot bodemer at brillux dot de The SampleCode produce in php5.2-200607190630 the same result, a memory dump. In all Testcases the script run without a PHP Error message or a 'Segmentation Failure'. ------------------------------------------------------------------------ [2006-07-20 14:18:03] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.2-win32-latest.zip ------------------------------------------------------------------------ [2006-07-20 14:16:20] a dot bodemer at brillux dot de Description: ------------ Hallo, we use a Linux/Apache/Oracle/PHP on a X86 system. We tested the Codesample on PHP 5.1.4 with Oracle 8.1/10.1 and Apache 2.0.46/2.0.58. Every times the same result, a memory dump from the current apache. Reproduce code: --------------- <?php $query= "declare n_status NUMBER(2); begin n_status := -1 ; IF :n_status = 0 THEN :retValue := :n_status; END IF; end;"; $conn = OCILogon("wws", "wws", "zente"); $stmt = OCIParse($conn, $query); OCIBindByName($stmt, ":retValue", $returnValue,50); OCIBindByName($stmt, ":n_status", $n_status,50); $ret=OCIExecute($stmt); print "\n<pre><br>OCIExecute() ret=$ret"; print "\n<br> Return Value=".$returnValue; ?> Expected result: ---------------- The return value must be NULL. Actual result: -------------- The result is a memory dump from the current apache. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38161&edit=1