FirebirdSQL logo

'YESTERDAY'

Verfügbar in

DSQL, PSQL, ESQL

Typ

CHAR(9)

'YESTERDAY' ist keine Variable, sondern ein String-Literal.Es ist jedoch in dem Sinne besonders, dass Sie, wenn Sie es in einen Datums-/Uhrzeittyp CAST() geben, das Datum des Vortages erhalten.Siehe auch [fblangref40-contextvars-today-de].

Beispiele
select 'Yesterday' from rdb$database
-- Ergebnis 'Yesterday'

select cast('Yesterday as date) from rdb$database
-- Ergebnis z.B. 2011-10-02

select cast('YESTERDAY' as timestamp) from rdb$database
-- Ergebnis z.B. 2011-10-02 00:00:00.0000

USER

Verfügbar in

DSQL, PSQL

Typ

VARCHAR(63)

Syntax
USER

USER ist eine Kontextvariable, die den Namen des aktuell verbundenen Benutzers enthält.Es entspricht vollständig [fblangref40-contextvars-current-user-de].

Beispiel
create trigger bi_customers for customers before insert as
begin
  New.added_by  = USER;
  New.purchases = 0;
end

docnext count = 7

CURRENT_ROLE

Verfügbar in

DSQL, PSQL

Typ

VARCHAR(63)

Syntax
CURRENT_ROLE

CURRENT_ROLE ist eine Kontextvariable, die die explizit angegebene Rolle des aktuell verbundenen Benutzers enthält.Wenn keine explizit angegebene Rolle vorhanden ist, ist CURRENT_ROLE 'NONE'.

CURRENT_ROLE repräsentiert immer eine gültige Rolle oder 'NONE'.Wenn sich ein Benutzer mit einer nicht vorhandenen Rolle verbindet, setzt die Engine sie stillschweigend auf "NONE" zurück, ohne einen Fehler zurückzugeben.

Note

Rollen, die standardmäßig aktiv sind und nicht explizit beim Verbinden oder Verwenden von SET ROLE angegeben sind, werden von CURRENT_ROLE nicht zurückgegeben.Verwenden Sie RDB$ROLE_IN_USE, um nach allen aktiven Rollen zu suchen.

Beispiel
if (current_role <> 'MANAGER')
  then exception only_managers_may_delete;
else
  delete from Customers where custno = :custno;
Siehe auch

RDB$ROLE_IN_USE

CURRENT_TIME

Verfügbar in

DSQL, PSQL, ESQL

Typ

TIME WITH TIME ZONE

Caution

Der Datentyp wurde in Firebird 4.0 von TIME WITHOUT TIME ZONE in TIME WITH TIME ZONE geändert.Verwenden Sie [fblangref40-contextvars-localtime-de], um TIME WITHOUT TIME ZONE zu erhalten.

Syntax
CURRENT_TIME [ (<precision>) ]

<precision> ::= 0 | 1 | 2 | 3

Das optionale Argument precision wird in ESQL nicht unterstützt.

Table 1. CURRENT_TIME Parameter
Parameter Beschreibung

precision

Präzision.Der Standardwert ist 0.In ESQL nicht unterstützt.

CURRENT_TIME gibt die aktuelle Serverzeit in der Sitzungszeitzone zurück.Der Standardwert ist 0 Dezimalstellen, d. h. Sekundengenauigkeit.

Note
  • CURRENT_TIME hat eine Standardgenauigkeit von 0 Dezimalstellen, wobei CURRENT_TIMESTAMP eine Standardgenauigkeit von 3 Dezimalstellen hat.Daher ist CURRENT_TIMESTAMP nicht die genaue Summe von CURRENT_DATE und CURRENT_TIME, es sei denn, Sie geben explizit eine Genauigkeit an (d. h. CURRENT_TIME(3) oder CURRENT_TIMESTAMP(0)).

  • Innerhalb eines PSQL-Moduls (Prozedur, Trigger oder ausführbarer Block) bleibt der Wert von CURRENT_TIME bei jedem Lesen konstant.Wenn mehrere Module sich gegenseitig aufrufen oder auslösen, bleibt der Wert während der Dauer des äußersten Moduls konstant.Wenn Sie einen fortlaufenden Wert in PSQL benötigen (z. B. um Zeitintervalle zu messen), verwenden Sie [fblangref40-contextvars-now-de].

Warning
CURRENT_TIME und Firebird 4.0 Zeitzonenunterstützung

Firebird 4.0 hat Unterstützung für Zeitzonen hinzugefügt.Als Teil dieser Unterstützung wurde eine Inkompatibilität mit dem CURRENT_TIME-Ausdruck im Vergleich zur vorherigen Version eingeführt.

In Firebird 4.0 gibt CURRENT_TIME den Typ TIME WITH TIME ZONE zurück.Damit Ihre Abfragen mit dem Datenbankcode von Firebird 4.0 und höher kompatibel sind, haben Firebird 3.0.4 und Firebird 2.5.9 den Ausdruck [fblangref40-contextvars-localtime-de] eingeführt.In Firebird 3.0.4 und Firebird 2.5.9 ist LOCALTIME ein Synonym für CURRENT_TIME.

In Firebird 4.0 funktioniert LOCALTIME weiterhin wie in Firebird 3.0.4 und höher und Firebird 2.5.9 (gibt TIME [WITHOUT TIME ZONE] zurück), während CURRENT_TIME jetzt einen anderen Datentyp zurückgibt, TIME WITH TIMEZONE.

Beispiele
select current_time from rdb$database
-- Ergebnis z.B. 14:20:19.0000

select current_time(2) from rdb$database
-- Ergebnis z.B. 14:20:23.1200

CURRENT_TIMESTAMP

Verfügbar in

DSQL, PSQL, ESQL

Typ

TIMESTAMP WITH TIME ZONE

Caution

Der Datentyp wurde in Firebird 4.0 von TIMESTAMP WITHOUT TIME ZONE in TIMESTAMP WITH TIME ZONE geändert.Verwenden Sie [fblangref40-contextvars-localtimestamp-de], um TIMESTAMP WITHOUT TIME ZONE zu erhalten.

Syntax
CURRENT_TIMESTAMP [ (<precision>) ]

<precision> ::= 0 | 1 | 2 | 3

Das optionale Argument precision wird in ESQL nicht unterstützt.

Table 1. CURRENT_TIMESTAMP Parameter
Parameter Beschreibung

precision

Präzision.Der Standardwert ist 0.In ESQL nicht unterstützt.

CURRENT_TIMESTAMP gibt das aktuelle Serverdatum und die aktuelle Uhrzeit in der Sitzungszeitzone zurück.Der Standardwert ist 3 Dezimalstellen, d. h. Millisekunden-Genauigkeit.

Note
  • Die Standardgenauigkeit von CURRENT_TIME beträgt 0 Dezimalstellen, also ist CURRENT_TIMESTAMP nicht die genaue Summe von CURRENT_DATE und CURRENT_TIME, es sei denn, Sie geben explizit eine Genauigkeit an (zB CURRENT_TIME(3) oder `CURRENT_TIMESTAMP(0) `).

  • Innerhalb eines PSQL-Moduls (Prozedur, Trigger oder ausführbarer Block) bleibt der Wert von CURRENT_TIMESTAMP bei jedem Lesen konstant.Wenn mehrere Module sich gegenseitig aufrufen oder auslösen, bleibt der Wert während der Dauer des äußersten Moduls konstant.Wenn Sie einen fortlaufenden Wert in PSQL benötigen (z. B. um Zeitintervalle zu messen), verwenden Sie [fblangref40-contextvars-now-de].

Warning
CURRENT_TIMESTAMP und Firebird 4 Zeitzonenunterstützung

Firebird 4.0 hat Unterstützung für Zeitzonen hinzugefügt.Im Rahmen dieser Unterstützung wurde im Vergleich zu früheren Versionen eine Inkompatibilität mit dem CURRENT_TIMESTAMP-Ausdruck eingeführt.

In Firebird 4.0 gibt CURRENT_TIMESTAMP den Typ TIMESTAMP WITH TIME ZONE zurück.Damit Ihre Abfragen mit dem Datenbankcode von Firebird 4.0 und höher kompatibel sind, haben Firebird 3.0.4 und Firebird 2.5.9 den Ausdruck [fblangref40-contextvars-localtimestamp-de] eingeführt.In Firebird 3.0.4 und Firebird 2.5.9 ist LOCALTIMESTAMP ein Synonym für CURRENT_TIMESTAMP.

In Firebird 4.0 funktioniert LOCALTIMESTAMP weiterhin wie in Firebird 3.0.4 und höher und Firebird 2.5.9 (gibt TIMESTAMP [WITHOUT TIME ZONE] zurück), während CURRENT_TIMESTAMP jetzt einen anderen Datentyp zurückgibt, TIMESTAMP MIT ZEITZONE.

Beispiele
select current_timestamp from rdb$database
-- Ergebnis z.B. 2008-08-13 14:20:19.6170

select current_timestamp(2) from rdb$database
-- Ergebnis z.B. 2008-08-13 14:20:23.1200

CURRENT_TRANSACTION

Verfügbar in

DSQL, PSQL

Typ

BIGINT

Syntax
CURRENT_TRANSACTION

CURRENT_TRANSACTION enthält die eindeutige Kennung der aktuellen Transaktion.

Sein Wert wird von einem Zähler auf der Kopfseite der Datenbank abgeleitet, der bei jeder neuen Transaktion inkrementiert wird.Wenn eine Datenbank wiederhergestellt wird, wird dieser Zähler auf Null zurückgesetzt.

Beispiele
select current_transaction from rdb$database

New.Txn_ID = current_transaction;

CURRENT_USER

Verfügbar in

DSQL, PSQL

Typ

VARCHAR(63)

Syntax
CURRENT_USER

CURRENT_USER ist eine Kontextvariable, die den Namen des aktuell verbundenen Benutzers enthält.Es ist völlig äquivalent zu [fblangref40-contextvars-user-de].

Beispiel
create trigger bi_customers for customers before insert as
begin
    New.added_by  = CURRENT_USER;
    New.purchases = 0;
end

DELETING

Verfügbar in

PSQL

Typ

BOOLEAN

Syntax
DELETING

Nur in Triggern verfügbar, DELETING zeigt an, ob der Trigger für eine DELETE-Operation ausgelöst wurde.Vorgesehen für die Verwendung in multi-action triggers-de.

Beispiel
if (deleting) then
begin
  insert into Removed_Cars (id, make, model, removed)
    values (old.id, old.make, old.model, current_timestamp);
end

GDSCODE

Verfügbar in

PSQL

Typ

INTEGER

Syntax
GDSCODE

In einem “WHEN …​ DO”-Fehlerbehandlungsblock enthält die Kontextvariable GDSCODE die numerische Darstellung des aktuellen Firebird-Fehlercodes.Vor Firebird 2.0 wurde GDSCODE nur in WHEN GDSCODE-Handlern gesetzt.Jetzt kann es auch in den Blöcken WHEN ANY, WHEN SQLCODE, WHEN SQLSTATE und WHEN EXCEPTION ungleich Null sein, vorausgesetzt, die den Fehler auslösende Bedingung entspricht einem Firebird-Fehlercode.Außerhalb von Fehlerhandlern ist GDSCODE immer 0.Außerhalb von PSQL existiert es überhaupt nicht.

Note

Nach WHEN GDSCODE müssen Sie symbolische Namen wie grant_obj_notfound usw. verwenden.Aber die Kontextvariable GDSCODE ist ein INTEGER.Wenn Sie es mit einem bestimmten Fehler vergleichen möchten, muss der Zahlenwert verwendet werden, z.335544551 für grant_obj_notfound.

Beispiel
when gdscode grant_obj_notfound, gdscode grant_fld_notfound,
   gdscode grant_nopriv, gdscode grant_nopriv_on_base
do
begin
  execute procedure log_grant_error(gdscode);
  exit;
end