README.md
December 5, 2022 · View on GitHub
Description
Finally a valid resolution to this strange Oracle error.
More Info
| Submitted On | |
| By | John Galanopoulos |
| Level | Intermediate |
| User Rating | 5.0 (15 globes from 3 users) |
| Compatibility | VB 5.0, VB 6.0, VB Script, ASP (Active Server Pages) |
| Category | Debugging and Error Handling |
| World | Visual Basic |
| Archive File |
Source Code
The "ORA-01843" Error; How-Not-To
I have seen many developers (specifically those who deal with ORACLE backends) knocking themselves out (i was one of them) with this strange error while trying to execute an SQL query with a date field in it.
For some strange reason, Oracle seems to react with your date format
'mm/dd/yyyy' (or 'dd/mm/yyyy')
and raises this error.
The first thing i did, was to check whether the registry value HKEY_LOCAL_MACHINE\Software\ORACLE\nls_date_format was of the format "dd/mm/yyyy".
And it was!! After i tried many things, i returned to that key and i changed the format. Still nothing. This key seems to have no effect to the way ORACLE databases handle date values.
I went back to my source and after the line where my connection to the ORACLE database was initialized, i wrote :
strSQL = "ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY'"
{The following line applies to Oracle Objects for OLE ( aka OO4O). If you use ADO, RDO, DAO, ODBC API etc etc write it in it's relative format}.
myOraDB.ExecuteSQL (strSQL)
Guess what ppl. It worked!
All my Insert/Update/Delete SQL statements that included a date value where properly inserted into the Oracle database table. No errors so no problems :-)
More oracle tips at http://aboutoracle.blogspot.com