Wie shmia das gesagt hat, so wäre es genau richtig. Mir gelingt es leider immer noch nicht, sofern ein SUM usw. im Select drin steht, noch ein anderes Feld dazuzupacken. Wer will kann sich die
DB mal ansehen oder das Script ansehen. Also in IBExpert
DB registrieren oder das Script ausführen.
Hier ist anscheinend jede Erweiterung verboten. Nicht mal ohne Erweiterung ?
SQL, FDB alles verboten ??
.1 und .2 geht auch nicht. Na das ist aber doch jetzt schwer übertrieben !
SQL-Code:
/******************************************************************************/
/**** Generated by IBExpert 2005.06.07 29.08.2005 20:50:59 ****/
/******************************************************************************/
SET SQL DIALECT 3;
SET NAMES ISO8859_1;
CREATE DATABASE '
C:\db\TESTDB.FDB'
USER '
SYSDBA' PASSWORD '
masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
/******************************************************************************/
/**** Generators ****/
/******************************************************************************/
CREATE GENERATOR GEN_ART_ID;
SET GENERATOR GEN_ART_ID
TO 2;
CREATE GENERATOR GEN_KSTAT_ID;
SET GENERATOR GEN_KSTAT_ID
TO 6;
SET TERM ^ ;
/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/
CREATE PROCEDURE TESTSP (
VONMONAT
INTEGER,
BISMONAT
INTEGER,
ID_ART
INTEGER)
RETURNS (
MONATSMENGE
INTEGER)
AS
BEGIN
EXIT;
END^
SET TERM ; ^
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE ART (
ID
INTEGER NOT NULL,
NR
INTEGER,
BEZ
CHAR(30)
);
CREATE TABLE KSTAT (
ID
INTEGER NOT NULL,
ID_ART
INTEGER,
MONAT
INTEGER,
MENGE
INTEGER
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE ART
ADD CONSTRAINT PK_ART
PRIMARY KEY (ID);
ALTER TABLE KSTAT
ADD CONSTRAINT PK_KSTAT
PRIMARY KEY (ID);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE KSTAT
ADD CONSTRAINT FK_KSTAT_1
FOREIGN KEY (ID_ART)
REFERENCES ART (ID);
/******************************************************************************/
/**** Triggers ****/
/******************************************************************************/
SET TERM ^ ;
/******************************************************************************/
/**** Triggers for tables ****/
/******************************************************************************/
/* Trigger: ART_BI0 */
CREATE TRIGGER ART_BI0
FOR ART
ACTIVE BEFORE
INSERT POSITION 0
AS
begin
if (new.ID
is null)
then
new.ID = gen_id(GEN_ART_ID, 1);
end
^
/* Trigger: KSTAT_BI0 */
CREATE TRIGGER KSTAT_BI0
FOR KSTAT
ACTIVE BEFORE
INSERT POSITION 0
AS
begin
if (new.ID
is null)
then
new.ID = gen_id(GEN_KSTAT_ID, 1);
end
^
SET TERM ; ^
/******************************************************************************/
/**** Stored Procedures ****/
/******************************************************************************/
SET TERM ^ ;
ALTER PROCEDURE TESTSP (
VONMONAT
INTEGER,
BISMONAT
INTEGER,
ID_ART
INTEGER)
RETURNS (
MONATSMENGE
INTEGER)
AS
DECLARE VARIABLE MENGE
INTEGER;
begin
SELECT SUM(MENGE)
/*,MENGE */ FROM KSTAT
WHERE (ID_ART = :ID_ART)
AND
(MONAT >= :VONMONAT)
AND (MONAT <= :BISMONAT)
INTO :MONATSMENGE
/*GROUP BY MENGE*/;
suspend;
end
^
SET TERM ; ^
Da ist sogar der Join jetzt raus.