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

Reply via email to