Re: OCIBindByName with Oracle 8i17 problem ?!
| From: | Fabien JOSEPH | 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: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 (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^^^^^^^^^^^^^^^^^^^^^^^^ i'd say you have a problem with your NLS_LANG setting. re, tcCREATE 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: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.phpThank you for your help but I set the NLS_LANG in my profile of user Oracle, and it's the same result.
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.