Forum: Datenbanken
by MrSpock,
1. Sep 2015
Genial!
Das hat mir noch gefehlt, jetzt funktioniert es:
CREATE OR ALTER procedure GET_ERFNR (
JAHR varchar(2) not null,
WOCHE varchar(2) not null)
returns (
ERFNR integer)
as
Forum: Datenbanken
by MrSpock,
1. Sep 2015
Jetzt hab ich es "fast" so, wie ich es haben wollte. Meine SP sieht wie folgt aus:
CREATE OR ALTER procedure GET_ERFNR (
JAHR varchar(2) not null,
WOCHE varchar(2) not null)
returns (
ERFNR integer)
as
declare variable ANZ integer;
Forum: Datenbanken
by MrSpock,
31. Aug 2015
Eben wegen der Semaphore bei GEN_ID() möchte ich diese ja als Zähler benutzen. Der Zähler beginnt jeder Woche/Jahr wieder bei 1 und GEN_ID() verhindert die doppelte Vergabe. Ich könnte jetzt z.B. 53 Zähler für die Kalenderwoche einsetzen und diese nach einem Jahr zurücksetzen. Dann müsste ich aber auch noch eine Fehlermeldung ausgeben, wenn jemand versucht eine Erfassung mit einer Erfassungswoche...
Forum: Datenbanken
by MrSpock,
31. Aug 2015
Hallo Lemmy,
danke für die Info. Hast du eine Ahnung, warum diese Warnung ausgesprochen wird?
Forum: Datenbanken
by MrSpock,
31. Aug 2015
Nein, keine sprechende ID. Ich benötige einen Generator, der eine ID (Erfassungsnummer) hochzählt, diese Nummer fängt jede Woche, jedes Jahres wieder bei 1 an. Ich habe deshalb vor, einen Generator dynamisch zu erzeugen: z.B. ERFNR1501 für Erfassungsnummern in der ersten Kalenderwoche des Jahres 2015. Wenn der generator noch nicht existiert, wird er neu angelegt, ansonsten wird mit GEN_ID die...
Forum: Datenbanken
by MrSpock,
31. Aug 2015
Ja, danke, funktioniert:
execute statement 'create sequence erfnr' || jahr || monat;
Forum: Datenbanken
by MrSpock,
31. Aug 2015
Hallo,
kann ich in einer Stored Procedure in Firebird einen Generator mit "dynamischen Namen" erzeugen, also etwa so:
gname = 'ERFN' || jahr || monat;
create sequence "gname";
erfnr = gen_id("gname", 1)