Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: Problem mit stored Procedure und group by

  Alt 29. Aug 2005, 19:51
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.
Gruß
Hansa
  Mit Zitat antworten Zitat