Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
Database Servers
DB2InformixIngresMS SQLOraclePervasive.SQLPostgreSQLProgressSybase
Desktop Databases
FileMakerFoxProMS AccessParadox
General
General DB TopicsDatabase Theory
Related Topics
Java Development.NET DevelopmentVB DevelopmentMore Topics ...

Database Forum / Oracle / Oracle Server / February 2006

Tip: Looking for answers? Try searching our database.

Oracle/PHP problem

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Geoff Muldoon - 28 Feb 2006 03:37 GMT
Cross-posted to comp.databases.oracle.misc and comp.lang.php ...

Using PHP 4.3.11 on Linux and ADODB data abstraction library.

Oracle client version is 10.1.

Can successfully connect to remote database (version 9.2.0.6 on Linux
NLS_LANG=AL32UTF8).

When doing a simple select from a view:
select RTS_LOAD from VW_R_PROJECTED_LOAD_OUTPUT
I get the error message:
ociexecute(): OCIStmtExecute: ORA-01858: a non-numeric character was found
where a numeric was expected in adodb/461/drivers/adodb-oci8.inc.php on
line 942
1858: ORA-01858: a non-numeric character was found where a numeric was
expected

This happens even if I just select count(*) from the view.

Using SQLPlus from the web server I don't have any problems at all
selecting from the view, so it is definitely valid.

If in my PHP script I directly query the underlying table that this Oracle
view is based on, I have no problem.

Any clues?

Geoff M
Erwin Moller - 28 Feb 2006 08:53 GMT
> Cross-posted to comp.databases.oracle.misc and comp.lang.php ...
>
[quoted text clipped - 25 lines]
>
> Geoff M

Hi Geoff,

Assuming you set up the whole thing right, and you had some experience with
adodb... well, in that case it sounds like a firstclass bug to me. :-(

I would contact John Lim (jlim#natsoft.com, replace# with @) and ask him he
has a clue, and maybe he can fix it for you right away if you ask nicely.
:-)

Regards,
Erwin Moller
Andy Hassall - 28 Feb 2006 20:50 GMT
>Cross-posted to comp.databases.oracle.misc and comp.lang.php ...
>
[quoted text clipped - 23 lines]
>
>Any clues?

Try enabling debug on the ADOdb connection so you can see what it is actually
tring to execute (rather than what you expect it is executing) - just to make
sure.

My initial thought is NLS issues - implicit conversions somewhere in the view?

ORA-01858 is thrown by date conversions - don't think anything else throws
that, IIRC.

What's NLS_DATE_FORMAT set to?

What's the definition of the view?

When you queried the table directly, did you use *exactly* the same SQL as the
view definition?

Signature

Andy Hassall :: andy@andyh.co.uk :: http://www.andyh.co.uk
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool

Geoff Muldoon - 28 Feb 2006 22:27 GMT
andy@andyh.co.uk says...

>  My initial thought is NLS issues - implicit conversions somewhere in the view?

Bingo.

Although in my PHP code I always use explicit (to_date) date conversion in
any SQL, it appears that querying a view that has been successfully
compiled using implicit date conversion causes the problem.  

Odd that PHP and/or AdoDB and/or OCI appears to be attempting to
"revalidate" the view when simply selecting from it.  Don't know if this
is version specific or even at what stage (PHP/AdoDb/OCI/Oracle Client)
it's kicking in.  

Just recompiled the view with explicit date conversion and moving on, no
time to chase further.

Thanks Andy and Erwin for your pointers, owe you one.

Geoff

>  ORA-01858 is thrown by date conversions - don't think anything else throws
> that, IIRC.
[quoted text clipped - 5 lines]
>  When you queried the table directly, did you use *exactly* the same SQL as the
> view definition?
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2010 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.