Hello Everybody My application communicates with a maxdb via odbc. I have about 500 concurrent users.
For automatic numbering (orderno,customerno,invoiceno,...) we use this function. (we can't use sequences because we work with special number intervals in some tables) Function p_autozaehler ************************************************************************ ************ * Getting the next number for a searchvalue ************************************************************************ ************ parameters searchstring,newnumber l_sqlcmd = "SELECT wert as lastnumber FROM autonum " +; "where suchbegriff = '" + UPPER(searchstring) +"' WITH LOCK EXCLUSIVE " = SQLEXEC(p_verbindungsnr,l_sqlcmd) newnumber = lastnumber + 1 l_sqlcmd ="UPDATE autonum set wert=?newnumber where suchbegriff = '"+ UPPER(searchstring) +"'" = SQLEXEC(p_verbindungsnr,l_sqlcmd) l_sqlcmd = "commit" = SQLEXEC(p_verbindungsnr,l_sqlcmd) return(newnumber) ENDFUNC Now we are thinking about replacing this function with a dbproc call.(our first dbproc !!) We create a dbproc: CREATE DBPROC dbproc_autonum (IN searchstring CHAR(30),OUT newnumber FIXED(10,0)) as begin select wert into :lastnumber FROM "BWPROGI"."AUTONUM" WHERE upper(suchbegriff) = upper(:searchstring) ; update "BWPROGI"."AUTONUM" set wert = wert + 1 WHERE upper(suchbegriff) = upper(:searchstring) ; SET newnumber = :lastnumber + 1; end; In our application we do: l_cmd = 'CALL dbproc_autonumneu(?l_searchstring,[EMAIL PROTECTED]) WITH COMMIT' = sqlexec(p_verbindungsnr,l_cmd) We tried with massive batch input (20000 calls) The version with using the dbproc is more then 150 % faster !!?? But ??? Does the dbproc the same job ??? Is there a better way to do this with maxdb? We want to avoid double numbers with massiv parallel use. (20 Users do a batch invoice creation(100 new invoices each) at the same time!?) Do we need WITH LOCK EXCLUSIVE in our dbproc also ?? Any help welcomed Best Regards Albert -- MaxDB Discussion Mailing List For list archives: http://lists.mysql.com/maxdb To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]