Bug #17916 MySQL 5 & MyODBC3.51.12 & D2005 Pro Pb Proc Stock
Submitted: 4 Mar 2006 14:43 Modified: 23 Mar 2006 12:49
Reporter: Philippe LE MOULEC Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / ODBC Severity:S2 (Serious)
Version:ODBC 3.51.12 & Server5.0.18 OS:Windows (Win XP SP2)
Assigned to: CPU Architecture:Any

[4 Mar 2006 14:43] Philippe LE MOULEC
Description:
Hello,

When i only used table acces Delphi was OK, but when i tried my access to proc stock i saw this error

Generel SQL Error :
[MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt-max]you have an error in your SQL syntax; check the manual that corresponds to your MySQL Server version for the right syntax to use near '{ call `Pa_Get_User`}' at line 1
BDE Error 13059
Server Error 1064

With Core lab components here is the error message :

#42000OUT or INOUT argument 3 for routine Pa_Get_User is not a variable

Ma proc stock is below :
CREATE PROCEDURE `Pa_Get_User`(
IN _ID_USR INT,
_VALID_USR CHAR(1),
OUT _NOM_USR VARCHAR(25),
_PRENOM_USR VARCHAR(25),
_CODE_USR VARCHAR(8),
_ADRIP_USR VARCHAR(15),
_DESC_USR VARCHAR(55),
_COMM_USR VARCHAR(255),
_REST_USR VARCHAR(5)
)

NB : In Query Browser all is OK.

filouxera

How to repeat:
I only use BDE database and procstock component in Delphi2005 Pro

Suggested fix:
I don't know
[4 Mar 2006 16:30] Valeriy Kravchuk
Thank you for a problem report. Looks like the real reason for it is described in 17898 already. Please, check.
[4 Mar 2006 16:31] Valeriy Kravchuk
Bug #17898, I meant.
[4 Mar 2006 17:05] Philippe LE MOULEC
Is it about my proc stock ?

DELIMITER $$

DROP PROCEDURE IF EXISTS `renjak`.`Pa_Get_UserList` $$
CREATE PROCEDURE `Pa_Get_UserList`(OUT nom Char(25), prenom char(25), prof_nom char(25) )
BEGIN
  Select par_user.Nom,
         par_user.prenom,
         par_profile.Prof_Nom
  from par_user, par_profile
  Where par_user.id_par_profile = par_profile.id_par_profile;
END $$

DELIMITER ;
[4 Mar 2006 17:09] Valeriy Kravchuk
It is about a real reson for the problem of calling procedures with OUT parameters using any Connector/X. I think, your report can be marked as duplicate of that http://bugs.mysql.com/bug.php?id=17898.
[4 Mar 2006 17:22] Philippe LE MOULEC
Perhaps with core labs Delphi component But with this procedure

DELIMITER $$

DROP PROCEDURE IF EXISTS `renjak`.`Pa_Sup_Color` $$
CREATE PROCEDURE `Pa_Sup_Color`(
IN  _ID_COLR   INT
)
BEGIN
     DELETE
     FROM Par_Color
     WHERE Id_Par_Color=_ID_COLR
     ;
END $$

DELIMITER ;

I got the same problem :
Generel SQL Error :
[MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt-max]you have an error in your SQL
syntax; check the manual that corresponds to your MySQL Server version for the
right syntax to use near '{ call `Pa_Sup_Color(1)`}' at line 1
[5 Mar 2006 7:12] Valeriy Kravchuk
If you really use this in your code, call `Pa_Sup_Color(1)`, then it is obvious mistake. You may put names in backticks, but not parameter. Please, try to use:

call `Pa_Sup_Color`(1).

If this will not work, please, send a part of your code (procedure) where you use this SP call.
[5 Mar 2006 11:15] Philippe LE MOULEC
OK,  "call `Pa_Sup_Color(1)`" don't work and "call `Pa_Sup_Color`(1)" work very well.

I use Tprocstoked Delphi component and it automatically do the string.

I think then this is a Delphi Bug(?) in Tprocstoked component and Then i will post my bug report to Borland 'report bug'.

I tried TADOData_Set and directly put my "call Pa_Sup_Color(1);" in it and it's work perfectly.

You can close This bug report and thank you for your help.
[23 Mar 2006 12:49] Valeriy Kravchuk
Looks like not a MySQL bug, according to the last comment.