I can use QUERIES whith functions  in the DBPROC? For example:
---------------------------------------------------------------------------------------
CREATE PUBLIC FUNCTION DBADMIN.FRANK (ID_PAGE INT,ID_AUC INT)
RETURNS  INT  AS
   VAR ID_REK INT; ALL_SUM FLOAT; ALL_VIEW INT;
TRY
SELECT SUM(R_SUM) FROM DBADMIN.BI_REK_AUC WHERE ID_AUCTION=:id_auc;
FETCH INTO :ALL_SUM ;

SELECT SUM(NUM_VIEW) FROM DBADMIN.BI_RANK WHERE ID_PAGE=:id_page OR ID_PAGE=0;
FETCH INTO :ALL_VIEW;

SELECT BI_REKLAMA.ID
   FROM DBADMIN.BI_REK_AUC,
               DBADMIN.BI_RANK,
               DBADMIN.BI_CAMP,
               DBADMIN.INV_ACCOUNTS,
               DBADMIN.BI_REKLAMA
   WHERE ROWNO<=1 AND
                 BI_REK_AUC.ID_AUCTION=:id_auc AND
                 BI_RANK.ID_PAGE(+)=:id_page AND
                 BI_RANK.ID_REKLAMA(+)=BI_REK_AUC.ID_REKLAMA AND
                 (BI_REK_AUC.R_SUM/:ALL_SUM>=
                 BI_RANK.NUM_VIEW/:ALL_VIEW OR
BI_REK_AUC.R_SUM/:ALL_SUM>=0) AND
               BI_REKLAMA.ID=BI_REK_AUC.ID_REKLAMA AND
                BI_CAMP.ID=BI_REKLAMA.ID_CAMP AND
                BI_CAMP.IS_ACTIVE=1 AND
                DATE(NOW())>=DATE(BI_CAMP.DT_CREATE) AND
                DATE(NOW())<=DATE(BI_CAMP.DT_END) AND
                DATE(NOW())>=DATE(BI_REKLAMA.DT_CREATE) AND
                DATE(NOW())<=DATE(BI_REKLAMA.DT_END) AND
                INV_ACCOUNTS.ID=BI_CAMP.ID_ACCOUNT AND
                INV_ACCOUNTS.BALANCE>BI_REK_AUC.R_SUM;
                FETCH INTO :ID_REK;
 CATCH
 IF $RC <> 100 THEN STOP ($RC, 'unexpected error');
RETURN ID_REK;
------------------------------------------------------------------------------------------------------
Query:
SELECT BI_REKLAMA.ID AS ID_REK,
              BI_REK_AUC.R_SUM,
              BI_AUCTION.ID AS ID_AUC,
              BI_PAGE.ID AS ID_PAGE,
              BI_ZONE.ID AS ID_ZONE,
              BI_ZONE.ID_PAY_TYPE,
              BI_REKLAMA.ID_TYPE_REK AS REK_TYPE,
              BI_CAMP.ID_ACCOUNT,
              BI_CAMP.ID AS ID_CAMP,
              BI_PROMO.ID_TYPE_PROMO AS PROMO_TYPE,
              BI_REF_KEYWORD.ID AS ID_KWR,
              BI_REF_KEYWORD.KEYWORDS
FROM DBADMIN.BI_REKLAMA,
            DBADMIN.BI_REK_AUC,
            DBADMIN.BI_AUCTION,
            DBADMIN.BI_PZ_AUC,
            DBADMIN.BI_PAGE_ZONE,
            DBADMIN.BI_PAGE,
            DBADMIN.BI_ZONE,
            DBADMIN.BI_CAMP,
            DBADMIN.BI_PROMO,
            DBADMIN.BI_AUC_KEYW,
            DBADMIN.BI_REF_KEYWORD
WHERE BI_REK_AUC.ID_REKLAMA=BI_REKLAMA.ID AND
            BI_REK_AUC.ID_AUCTION=BI_AUCTION.ID AND
            BI_PZ_AUC.ID=BI_AUCTION.ID_PZ_AUC AND
            BI_PAGE_ZONE.ID=BI_PZ_AUC.ID_PAGE_ZONE AND
            BI_PAGE.ID=BI_PAGE_ZONE.ID_PAGE AND
            BI_ZONE.ID=BI_PAGE_ZONE.ID_ZONE AND
            BI_CAMP.ID=BI_REKLAMA.ID_CAMP AND
            BI_PROMO.ID_REKLAMA(+)=BI_REKLAMA.ID AND
            BI_REKLAMA.ID=DBADMIN.FRANK(bi_page.id,bi_auction.id) AND
            BI_REF_KEYWORD.ID=BI_AUC_KEYW.ID_KEYWORD AND
            BI_AUC_KEYW.ID_AUCTION=BI_AUCTION.ID
--------------------------------------------------------------------------------------------
All work. But if i do:
------------------------------------------------------------------------------
CREATE DBPROC test (IN id_page INT,OUT ID_REK INT)
AS
SELECT BI_REKLAMA.ID AS ID_REK,
              BI_REK_AUC.R_SUM,
              BI_AUCTION.ID AS ID_AUC,
              BI_PAGE.ID AS ID_PAGE,
              BI_ZONE.ID AS ID_ZONE,
              BI_ZONE.ID_PAY_TYPE,
              BI_REKLAMA.ID_TYPE_REK AS REK_TYPE,
              BI_CAMP.ID_ACCOUNT,
              BI_CAMP.ID AS ID_CAMP,
              BI_PROMO.ID_TYPE_PROMO AS PROMO_TYPE,
              BI_REF_KEYWORD.ID AS ID_KWR,
              BI_REF_KEYWORD.KEYWORDS
FROM DBADMIN.BI_REKLAMA,
            DBADMIN.BI_REK_AUC,
            DBADMIN.BI_AUCTION,
            DBADMIN.BI_PZ_AUC,
            DBADMIN.BI_PAGE_ZONE,
            DBADMIN.BI_PAGE,
            DBADMIN.BI_ZONE,
            DBADMIN.BI_CAMP,
            DBADMIN.BI_PROMO,
            DBADMIN.BI_AUC_KEYW,
            DBADMIN.BI_REF_KEYWORD
WHERE BI_REK_AUC.ID_REKLAMA=BI_REKLAMA.ID AND
            BI_REK_AUC.ID_AUCTION=BI_AUCTION.ID AND
            BI_PZ_AUC.ID=BI_AUCTION.ID_PZ_AUC AND
            BI_PAGE_ZONE.ID=BI_PZ_AUC.ID_PAGE_ZONE AND
            BI_PAGE.ID=BI_PAGE_ZONE.ID_PAGE AND
            BI_ZONE.ID=BI_PAGE_ZONE.ID_ZONE AND
            BI_CAMP.ID=BI_REKLAMA.ID_CAMP AND
            BI_PROMO.ID_REKLAMA(+)=BI_REKLAMA.ID AND
            BI_REKLAMA.ID=DBADMIN.FRANK(:id_page,bi_auction.id) AND
            BI_REF_KEYWORD.ID=BI_AUC_KEYW.ID_KEYWORD AND
            BI_AUC_KEYW.ID_AUCTION=BI_AUCTION.ID;
FETCH INTO :ID_REK;
----------------------------------------------------------------------------------------
After CALL TEST(1124,:id_rek);

Auto Commit: On, SQL Mode: Internal, Isolation Level: Committed
Integrity constraint violation;-8006 POS(55) Data types must be
compatible:P1,UNKNOWN,FIXED.

I replace "BI_REKLAMA.ID=DBADMIN.FRANK(:id_page,bi_auction.id) AND"
-> "BI_REKLAMA.ID=DBADMIN.FRANK(1124,bi_auction.id) AND"  in the
procedure. Error is not alert, but procedure return empty result.
If i delete from query
"BI_REKLAMA.ID=DBADMIN.FRANK(:id_page,bi_auction.id) AND" -  procedure
work.
What i do wrong?

--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to