Es liegt am Aufruf der Procedure P_BKUNDE_DIAG.
Anbei die korrigierte Version:
Code: Alles auswählen
SET TERM ^ ;
CREATE OR ALTER PROCEDURE P_BKUNDE_DIAG (
BKUNDE_ID INTEGER)
RETURNS (
BETRAG NUMERIC(15,2),
MONAT VARCHAR(2))
AS
DECLARE VARIABLE VONDATUM DATE;
DECLARE VARIABLE ENDDATUM DATE;
DECLARE VARIABLE ZAEHLER INTEGER;
BEGIN
/* LETZTER STAND 06.11.2007 10:07:57 HS */
/* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
/* LETZTER STAND: 07.05.2009 09:55:51 BY KDP */
/* Procedure angepasst */
/* SynERPy Version ist mit '--' auskommentiert */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BSAINFO_DIAG');
-- JAHR = F_YEAR(CURRENT_DATE);
ZAEHLER = 1;
VONDATUM = '01.01.' || (F_YEAR(Current_Date) - 1);
WHILE (ZAEHLER < 25) DO
BEGIN
-- IF (ZAEHLER = 1) THEN
-- VONDATUM = '01.12.' || F_YEAR(CURRENT_DATE);
-- ELSE
-- VONDATUM = F_ADDMONTH(VONDATUM, 1 - ZAEHLER);
-- VONDATUM = VONDATUM - F_DAYOFMONTH(VONDATUM) + 1;
-- VONDATUM = '01.01.' || F_YEAR(Current_Date) - 1;
ENDDATUM = F_DAYSOFMONTH(f_month(:VONDATUM),f_year(:VONDATUM)) || '.' ||
f_month(:VONDATUM) || '.' || f_year(:VONDATUM);
-- ENDDATUM = F_ADDMONTH(VONDATUM, 1);
SELECT SUM(B.GESAMT)
FROM BRRC B
WHERE B.BKUNDE_ID_LINKKEY = :BKUNDE_ID AND
B.RECHNUNGSART IN ('R', 'G', 'S') AND
B.RECHDATUM BETWEEN :VONDATUM AND :ENDDATUM
INTO :BETRAG;
IF (BETRAG IS NULL) THEN BETRAG = 0;
IF (ZAEHLER <= 12) THEN
MONAT = CAST(F_PADLEFT(ZAEHLER,'0',2) AS VARCHAR(2));
ELSE
MONAT = CAST(F_PADLEFT(ZAEHLER-12,'0',2) AS VARCHAR(2));
SUSPEND;
ZAEHLER = :ZAEHLER + 1;
VONDATUM = f_addmonth(:VONDATUM,1);
END
ZAEHLER = 1;
END^
SET TERM ; ^
COMMENT ON PROCEDURE P_BKUNDE_DIAG IS
'Gibt Werte für Kundeninformationschart zurück';
DELETE FROM RDB$USER_PRIVILEGES
WHERE (RDB$USER = 'P_BKUNDE_DIAG') AND (RDB$USER_TYPE = 5);
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BKUNDE_DIAG;
GRANT SELECT ON BRRC TO PROCEDURE P_BKUNDE_DIAG;
GRANT EXECUTE ON PROCEDURE P_BKUNDE_DIAG TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BKUNDE_DIAG TO SYSDBA;