oracle 10g procedure ORA-06550 + PLS-00103 [message #238332] |
Thu, 17 May 2007 07:35 |
merawalaid
Messages: 2 Registered: May 2007
|
Junior Member |
|
|
Hi,
i have a old vc++ application which calls a stored procedure. This application has been in use for a long time. Earlier the Database server and client were both oracle 9i. Now we moved the server and some of the clients to 10g.
The application still works from machine with 9i clients (with older odbc drivers) but from machines with 10g client (with newer odbc drivers) i get the following error:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
( ) - + case mod new not null others <an identifier> table avg count current exists max min prior sql stddev sum .........
Finally i also get:
[Oracle][ODBC][Ora]ORA-06550: line 1, column 16
The procedure has three parameters which it recieves as type NUMBER. The procedure is defined as:
CREATE OR REPLACE PROCEDURE "TEST"."MYPROCNAME"
(prm1 NUMBER, prm2 NUMBER, prm3 NUMBER) AS
/*...body of the procedure...*/
The process flow in application code (vc++) goes something like this:
SQLBindParameter(handelToSTMT,1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, sizeof(parm1), 0, &parm1, 0, NULL);
SQLBindParameter(handelToSTMT,2, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, sizeof(parm1), 0, &parm2, 0, NULL);
SQLBindParameter(handelToSTMT,3, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, sizeof(parm1), 0, &parm3, 0, NULL);
SQLPrepare(handelToSTMT,"{call myProcName(?, ?, ?)}",SQL_NTS);
SQLExecute(handelToSTMT);
Is there some change in how 10g odbc parameter bindings work? Can it be possible to change the procedure to compensate for that?
|
|
|
|