Oops, I somehow deleted a 'not' from the 1st sentence, it should read:
... although MaxDB 7.6. does support LONG parameters of DB Procedures, the ODBC driver currently is *not* able to handle them, ... Regards Alexander Schröder -----Original Message----- From: Schroeder, Alexander [mailto:[EMAIL PROTECTED] Sent: Donnerstag, 6. Oktober 2005 10:38 To: Xavier CAMIER; [email protected] Subject: RE: DBPROC LONG ASCII Hello Xavier, although MaxDB 7.6. does support LONG parameters of DB Procedures, the ODBC driver currently is able to handle them, only the JDBC driver currently supports the necessary protocol (which is a bit different to the conventional way of transferring LONG values). Sorry for any inconvenience caused by this fact. Regards Alexander Schröder SAP DB, SAP Labs Berlin -----Original Message----- From: Xavier CAMIER [mailto:[EMAIL PROTECTED] Sent: Donnerstag, 6. Oktober 2005 10:11 To: [email protected] Subject: DBPROC LONG ASCII MaxDB 7.6.00.12 Delphi 7.1 Hello, Even after reading some posts on the MaxDB mailing list archive I can't understand why my DBProc doesn't work as expected. The app works that way : -------------------------- A form is data linked to a table called TEXTES. TEXTES's definition is very close to TEXTES_PRE's one. When modifying datas thanks to the form I have to keep original datas into TEXTES and to store modified datas into TEXTES_PRE. Do do so I parse every fields from the ADO RecordSet before commiting the edit and store the result into TEXTES_PRE thanks to the following DBProc : CREATE DBPROC TEXTES_PRE_ENREG (IN IDFAMILLE INTEGER, IN IDSOUSFAMILLE INTEGER, IN IDBIBLIO INTEGER, IN CODEELT VARCHAR(20), IN TITREELT VARCHAR(255), IN DATEMAJ DATE, IN TEXTE LONG ASCII, IN IDELT INTEGER) AS TRY INSERT INTO DBA.TEXTES_PRE (IDELT,DATEMAJ,TEXTE, IDSOUSFAMILLE, IDFAMILLE, IDBIBLIO, CODEELT, TITREELT) VALUES (:IDELT,:DATEMAJ,:TEXTE, :IDSOUSFAMILLE, :IDFAMILLE, :IDBIBLIO, :CODEELT, :TITREELT); CATCH IF $RC <> 100 THEN STOP ($RC, 'Impossible d''enregistrer cet élément'); The code to call the stored proc is : With TADOCommand.Create(nil) do //Creates and instanciates a Command try Connection:=F_DataMod.ADOConnection; //connects to the DB CommandType:=cmdStoredProc; //tells the system I'll call a DBProc CommandText:=getprocName(MODE_ENREG); //getProcName returns TEXTES_PRE_ENREG Parameters.Refresh; //gets the parameters list Prepared:=True; //done because of what I read on the MaxDB list. for i:=0 to Parameters.Count-1 do //for each parameter gets the value in the ADODataSet Parameters[i].Value:=ADODataSet.FieldValues[Parameters[i].Name]; Execute; //Executes the DBProc and... crashes here finally Free; end; Here are some observations : ------------------------------ - When replacing the :TEXTE parameter into the insert statement by NULL the DBProc works - An insert ... select statement fom SQL Studio to check if the database works fine - The error occurs with either a LONG ASCII other a LONG BYTE field Could someone tell me how to use LONG fields with "parameterised" DBProcs ? Thanks in advance Kind regards Xavier. -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
