StoredProcedure output parameter raised EDatabaseError

Discussion of open issues, suggestions and bugs regarding MyDAC (Data Access Components for MySQL) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
cyrilo
Posts: 18
Joined: Wed 11 Oct 2006 08:47

StoredProcedure output parameter raised EDatabaseError

Post by cyrilo » Thu 10 Sep 2009 11:31

I have well-tested stored procedure BadNFromCDRtoDST_CODES_wodate:

Code: Select all

PROCEDURE ambs.BadNFromCDRtoDST_CODES_wodate(IN MaxCallsCount TINYINT(4) UNSIGNED, IN MinACD TINYINT(4) UNSIGNED, OUT BadNoCount INT)
BEGIN
    DECLARE VPhone      VARCHAR (255);
    DECLARE VCallsCount INT (11) UNSIGNED;
    DECLARE VACD        INT (11) UNSIGNED;
    DECLARE done        INT DEFAULT 0;
    DECLARE curcat      CURSOR FOR SELECT
      DST_NUMBER_BILL, COUNT(DST_NUMBER_BILL) AS CALLSCOUNT,
      (SUM(ELAPSED_TIME) DIV COUNT(DST_NUMBER_BILL)) AS ACD
      FROM CDR
      GROUP BY DST_NUMBER_BILL
      ORDER BY CALLSCOUNT DESC, ACD ASC;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
      DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET BadNoCount = BadNoCount - 1;
  
  SET BadNoCount = 0;
  
  OPEN curcat;

wet:
  LOOP 
    IF done THEN LEAVE wet;
    END IF;

    FETCH curcat INTO VPhone, VCallsCount, VACD;  
    
    IF VPhone  '' THEN   
       IF VCallsCount >= MaxCallsCount AND VACD <= MinACD THEN
        BEGIN
          INSERT INTO DEST_CODE VALUES (7, VPhone);
          SET BadNoCount=BadNoCount+1;  
        END; 
       END IF;
    END IF;
  END LOOP;
  
  CLOSE curcat;
END

Code: Select all

 
with DataModule2 do  begin MyBadNFromCDRtoDST_CODES_wodate.ParamByName('MaxCallsCount').AsInteger:=ElSpinEdit1.Value;  MyBadNFromCDRtoDST_CODES_wodate.ParamByName('MinACD').AsInteger:=ElSpinEdit2.Value;
MyBadNFromCDRtoDST_CODES_wodate.Execute;
MessageDlg(MyBadNFromCDRtoDST_CODES_wodate.ParamByName('BadNoCount').AsString, mtInformation,[mbOk],0);
end;
I always got same error message: "Project blackAMBS.exe raised exception class EDatabaseError with message Parameter BadCountNo not found"
But MyBadNFromCDRtoDST_CODES_wodate executed in dbForge for MySQL without any problems and always returned correct BadCountNo value.
MySQL version is 5.0.85-community-nt
I have no idea what's wrong with my code. Please help!

cyrilo
Posts: 18
Joined: Wed 11 Oct 2006 08:47

Post by cyrilo » Thu 10 Sep 2009 19:13

Seems like MyDAC bug

cyrilo
Posts: 18
Joined: Wed 11 Oct 2006 08:47

Post by cyrilo » Sat 12 Sep 2009 11:05

The problem was solved. "Null value" checkbox for output parameter "BadNoCount" in Stored Procedure parameters need to by unchecked.

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Mon 14 Sep 2009 06:40

It is good to see that this problem has been solved.

Post Reply