Thema: Delphi StoredProcedure Problem

Einzelnen Beitrag anzeigen

Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#1

StoredProcedure Problem

  Alt 27. Dez 2008, 18:06
Datenbank: Interbase • Version: 6 • Zugriff über: IBX
Hallo Leute!
Wieder einmal ein Problem zwischen meinen Ohren...

Also folgendes würde ich gerne erreichen. Um ein Rechnungsnummer zu erzeugen, wurde bisher auf der Client-Seite die Nummer zusammengestellt und geprüft, ob diese noch frei ist. Die Nummer basiert auf einem Schlüssel, der wie folgt aus sieht:
Code:
yyyy mm xx
---- -- --
 |    |  |.. Laufende Nummer 01-99
 |    |..... Nummer des aktuellen Monat
 |.......... Nummer des aktuellen Jahr
Nun war meine Überlegung, das ganze durch den Server mit einer StoredProcedure machen zu lassen.
Die einzelnen Funktionen, um an die Werte zu kommen habe schon:
SQL-Code:
SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) FROM RDB$DATABASE;
SELECT EXTRACT(MONTH FROM CURRENT_TIMESTAMP) FROM RDB$DATABASE;
SELECT COUNT(RNUMBER) FROM Rechnungen WHERE (RNUMBER LIKE ('yyyymm%'));
Nun das Problem. Wie bokomme ich die einzelnen Werte in den Rückgabewert der Procedure und wie stelle ich den String-Ausdruck für die letzte Abfrage zusammen? Ich hatte gedacht, es so machen zu können, aber IB hat da was dagegen:
SQL-Code:
SET TERM ^ ;

CREATE PROCEDURE MglGetNUMBER RETURNS (NEWNUMBER VARCHAR(20)) AS
BEGIN
  lyear VARCHAR(4);
  lmonth VARCHAR(2);
  lid VARCHAR(2);

  SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) INTO :lyear FROM RDB$DATABASE;
  SELECT EXTRACT(MONTH FROM CURRENT_TIMESTAMP) into :lmonth FROM RDB$DATABASE;
  SELECT COUNT(RNUMBER) FROM Rechnungen WHERE (RNUMBER LIKE (lyear+lmonth+'%')) INTO :lid;

  SELECT lyear+lmonth+lid INTO :NEWNUMBER;

  SUSPEND;
END
^

COMMIT WORK ^
SET TERM ;^
Human are Human to make mistakes.
  Mit Zitat antworten Zitat