Re: OCIBindByName with Oracle 8i17 problem ?!

From: Date: Tue, 05 Nov 2002 10:08:14 +0000
Subject: Re: OCIBindByName with Oracle 8i17 problem ?!
References: 1 2  Groups: php.db 
Request: Send a blank email to php-db+get-22984@lists.php.net to get a copy of this message
Thies C. Arntzen wrote:
On Mon, Nov 04, 2002 at 06:16:04PM +0100, Fabien JOSEPH wrote:
I discovered recently that it was impossible to bind an output placeholder plsql (an input work only). Configuration 1 : Suse + Oracle 8i17 + oci (oracle) + PHP4.2.3 Configuration 2 : HPUX11 + Oracle 8i17 + oci(oracle) + PHP4.2.3 Configuration 3 : HPUX11 + Oracle 8i17 + oci(oracle) + PHP4.2.2 With script : inoutdemo.sql
CREATE OR REPLACE PROCEDURE inoutdemo (par_in IN VARCHAR2,     par_in_out IN
OUT VARCHAR2,   par_out OUT VARCHAR2)   IS      BEGIN          par_out:=par_in;        par_in_out:=par_in||' '||par_in_out;    END;
$db=OCILogon("toto","titi");      $stmt=OCIParse($db,"BEGIN inoutdemo(:in,:inout,:out);END;");
OCIBindByName($stmt,":in",$in,32); OCIBindByName($stmt,":inout",$inout,32);
OCIBindByName($stmt,":out",$out,32);    $in="Hello ";   $inout="World!";        OCIExecute($stmt);      echo $in."\n".$inout."\n".$out."\n";
//Result Warning: OCIStmtExecute: ORA-06550: line 1, column 17: PLS-00553: character set name is not recognized ORA-06550: line 0, column 0:
^^^^^^^^^^^^^^^^^^^^^^^^ i'd say you have a problem with your NLS_LANG setting. re, tc
PL/SQL: Compilation unit analysis terminated in /opt/apache/htdocs/fab.php4 on line 58 Hello World! I tested this script with the 3 configurations but it's the same error I changed $in, &inout , &out into $&in, $&out, $&inout but it's the same error Please help me !!! Fabien JOSEPH -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Thank you for your help but I set the NLS_LANG in my profile of user Oracle, and it's the same result.
But I think it's not just the problem of the conversion of string The proof, I change my sql into : inoutdemo_number.sql CREATE OR REPLACE PROCEDURE inoutdemo_number (
	par_in IN NUMBER,     	par_in_out IN OUT NUMBER,   	par_out OUT NUMBER)   IS      BEGIN          	par_out:=par_in;        	par_in_out:=par_in+1000;
END; putenv( "ORACLE_HOME=/logi/ora817" ); putenv( "ORACLE_SID=MON_SID" ); putenv ("NLS_LANG=french_france.we8iso8859p1"); putenv ("ORA_NLS33=/logi/ora817/ocommon/nls/admin/data");
$db=OCILogon("toto","titi");      $stmt=OCIParse($db,"BEGIN inoutdemo_number(:in,:inout,:out);END;");
OCIBindByName($stmt,":in",$in,32); OCIBindByName($stmt,":inout",$inout,32);
OCIBindByName($stmt,":out",$out,32);    $in=5;   $inout=5;        OCIExecute($stmt);      echo $in."\n".$inout."\n".$out."\n";
Result : <br /> <b>Warning</b>: OCIStmtExecute: ORA-06550: line 1, column 13: PLS-00553: character set name is not recognized ORA-06550: line 0, column 0: PL/SQL: Compilation unit analysis terminated in <b>/opt/apache/htdocs/fab.php4</b> on line <b>60</b><br /> 5 6 Conclusion, OciBindDyName with number (output) doesn't work. It is strange PHP.

« previous php.db (#22984) next »