wDevil wrote : 

>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?

I think you are doing nothing wrong. Instead there seems to be a bug in
the MaxDB kernel. Please send me a
vtrace containing the call of your test procedure. For vtrace have a
look to http://sapdb.2scale.net/maxdb-wiki/VTrace

Best Regards,
Thomas

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

Reply via email to