CURRENT_CONNECTION
DSQL, PSQL
INTEGER
CURRENT_CONNECTION
CURRENT_CONNECTION
enthält den eindeutigen Bezeichner der aktuellen Verbindung.
Sein Wert wird von einem Zähler auf der Kopfseite der Datenbank abgeleitet, der bei jeder neuen Verbindung inkrementiert wird.Wenn eine Datenbank wiederhergestellt wird, wird dieser Zähler auf Null zurückgesetzt.
select current_connection from rdb$database
execute procedure P_Login(current_connection)
INSERTING
PSQL
BOOLEAN
INSERTING
Nur in Triggern verfügbar, zeigt INSERTING
an, ob der Trigger aufgrund einer INSERT
-Operation ausgelöst wurde.Vorgesehen für die Verwendung in Multi-Action-Trigger.
if (inserting or updating) then
begin
if (new.serial_num is null) then
new.serial_num = gen_id(gen_serials, 1);
end
LOCALTIME
DSQL, PSQL, ESQL
TIME WITHOUT TIME ZONE
LOCALTIME [ (<precision>) ] <precision> ::= 0 | 1 | 2 | 3
Das optionale Argument precision wird in ESQL nicht unterstützt.
Parameter | Beschreibung |
---|---|
precision |
Präzision.Der Standardwert ist 0.In ESQL nicht unterstützt |
LOCALTIME
gibt die aktuelle Serverzeit in der Sitzungszeitzone zurück.Der Standardwert ist 0 Dezimalstellen, d. h. Sekundengenauigkeit.
Note
|
|
select localtime from rdb$database
-- Ergebnis z.B. 14:20:19.0000
select localtime(2) from rdb$database
-- Ergebnis z.B. 14:20:23.1200
LOCALTIMESTAMP
DSQL, PSQL, ESQL
TIMESTAMP WITHOUT TIME ZONE
LOCALTIMESTAMP [ (<precision>) ] <precision> ::= 0 | 1 | 2 | 3
Das optionale Argument precision wird in ESQL nicht unterstützt.
Parameter | Beschreibung |
---|---|
precision |
Präzision.Der Standardwert ist 3.In ESQL nicht unterstützt |
LOCALTIMESTAMP
gibt das aktuelle Serverdatum und die aktuelle Uhrzeit in der Sitzungszeitzone zurück.Der Standardwert ist 3 Dezimalstellen, d. h. Millisekunden-Genauigkeit.
Note
|
|
select localtimestamp from rdb$database
-- Ergebnis z.B. 2008-08-13 14:20:19.6170
select localtimestamp(2) from rdb$database
-- Ergebnis z.B. 2008-08-13 14:20:23.1200
NEW
PSQL, nur Trigger
Datensatz
NEW.column_name
Parameter | Beschreibung |
---|---|
column_name |
Spaltenname für den Zugriff |
NEU
enthält die neue Version eines Datenbankeintrags, der gerade eingefügt oder aktualisiert wurde.Ab Firebird 2.0 ist es in 'AFTER'-Triggern schreibgeschützt.
Note
|
Bei Multi-Action-Triggern — eingeführt in Firebird 1.5 — ist |
'NOW'
DSQL, PSQL, ESQL
CHAR(3)
'NOW'
ist keine Variable, sondern ein String-Literal oder eine Datums-/Uhrzeit-Mnemonik.Es ist jedoch in dem Sinne besonders, dass Sie, wenn Sie es in einen Datums-/Uhrzeittyp CAST()
geben, das aktuelle Datum und/oder die aktuelle Uhrzeit erhalten.Seit Firebird 2.0 beträgt die Genauigkeit 3 Dezimalstellen, also Millisekunden. Bei 'NOW'
wird die Groß-/Kleinschreibung nicht beachtet und die Engine ignoriert führende oder nachfolgende Leerzeichen beim Casting.
Note
|
|
select 'Now' from rdb$database
-- Ergebnis 'Now'
select cast('Now' as date) from rdb$database
-- Ergebnis z.B. 2008-08-13
select cast('now' as time) from rdb$database
-- Ergebnis z.B. 14:20:19.6170
select cast('NOW' as timestamp) from rdb$database
-- Ergebnis z.B. 2008-08-13 14:20:19.6170
OLD
PSQL, nur Trigger
Datensatz
OLD.column_name
Parameter | Beschreibung |
---|---|
column_name |
Spaltenname für den Zugriff |
OLD
enthält die vorhandene Version eines Datenbankeintrags kurz vor einer Löschung oder Aktualisierung.Ab Firebird 2.0 ist es schreibgeschützt.
Note
|
Bei Multi-Action-Triggern — eingeführt in Firebird 1.5 — ist 'OLD' immer verfügbar.Wenn der Trigger jedoch durch ein 'INSERT' ausgelöst wird, gibt es offensichtlich keine bereits vorhandene Version des Datensatzes.In dieser Situation wird beim Lesen von |
RESETTING
PSQL
BOOLEAN
RESETTING
Nur in Triggern verfügbar, RESETTING
zeigt an, ob der Trigger während eines Sitzungs-Resets ausgelöst wurde.Sein Wert ist TRUE, wenn das Zurücksetzen der Sitzung im Gange ist, andernfalls FALSE.Vorgesehen für die Verwendung in ON DISCONNECT
- und ON CONNECT
-Datenbank-Triggern, um einen ALTER SESSION RESET
zu erkennen.
ROW_COUNT
PSQL
INTEGER
ROW_COUNT
Die Kontextvariable ROW_COUNT
enthält die Anzahl der Zeilen, die von der letzten DML-Anweisung (INSERT
, UPDATE
, DELETE
, SELECT
oder FETCH
) im aktuellen Trigger, in der gespeicherten Prozedur oder im ausführbaren Block betroffen sind.
SELECT
und FETCH
Nach einem Singleton SELECT
ist ROW_COUNT
1, wenn eine Datenzeile abgerufen wurde, andernfalls 0.
In einer FOR SELECT
Schleife wird ROW_COUNT
bei jeder Iteration inkrementiert (beginnend bei 0 vor der ersten).
Nach einem FETCH
von einem Cursor ist ROW_COUNT
1, wenn eine Datenzeile abgerufen wurde, andernfalls 0.Wenn mehr Datensätze vom gleichen Cursor abgerufen werden, wird ROW_COUNT
nicht über 1 hinaus erhöht.
In Firebird 1.5.x ist ROW_COUNT
0 nach jeder Art von SELECT
-Anweisung.
Note
|
|
update Figures set Number = 0 where id = :id;
if (row_count = 0) then
insert into Figures (id, Number) values (:id, 0);
SQLCODE
PSQL
2.5.1
INTEGER
SQLCODE
In einem “WHEN … DO
”-Fehlerbehandlungsblock enthält die Kontextvariable SQLCODE
den aktuellen SQL-Fehlercode.Vor Firebird 2.0 wurde SQLCODE
nur in den WHEN SQLCODE
- und WHEN ANY
-Handlern gesetzt.Sie darf jetzt auch in den Blöcken WHEN GDSCODE
, WHEN SQLSTATE
und WHEN EXCEPTION
ungleich Null sein, sofern die fehlerauslösende Bedingung einem SQL-Fehlercode entspricht.Außerhalb von Fehlerhandlern ist SQLCODE
immer 0.Außerhalb von PSQL existiert es überhaupt nicht.
Warning
|
|
when any
do
begin
if (sqlcode <> 0) then
Msg = 'An SQL error occurred!';
else
Msg = 'Something bad happened!';
exception ex_custom Msg;
end
SQLSTATE
PSQL
CHAR(5)
SQLSTATE
In einer “WHEN … DO
”-Fehlerbehandlung enthält die Kontextvariable SQLSTATE
den 5-stelligen, SQL-2003-konformen Statuscode, der sich aus der Anweisung ergibt, die den Fehler ausgelöst hat.Außerhalb von Fehlerhandlern ist SQLSTATE
immer '00000'
.Außerhalb von PSQL ist es überhaupt nicht verfügbar.
Note
|
|
when any
do
begin
Msg = case sqlstate
when '22003' then 'Numeric value out of range.'
when '22012' then 'Division by zero.'
when '23000' then 'Integrity constraint violation.'
else 'Something bad happened! SQLSTATE = ' || sqlstate
end;
exception ex_custom Msg;
end
CURRENT_DATE
DSQL, PSQL, ESQL
DATE
CURRENT_DATE
CURRENT_DATE
gibt das aktuelle Serverdatum zurück.
Note
|
Innerhalb eines PSQL-Moduls (Prozedur, Trigger oder ausführbarer Block) bleibt der Wert von |
select current_date from rdb$database
-- Ergebnis z.B. 2011-10-03
'TODAY'
DSQL, PSQL, ESQL
CHAR(5)
'TODAY'
ist keine Variable, sondern ein String-Literal oder ein Datumsmnemonik.Es ist jedoch in dem Sinne besonders, dass Sie, wenn Sie es in einen Datums-/Uhrzeittyp CAST()
geben, das aktuelle Datum erhalten.Bei 'TODAY'
wird die Groß-/Kleinschreibung nicht beachtet und die Engine ignoriert führende oder nachfolgende Leerzeichen beim Casting.
Note
|
|
select 'Today' from rdb$database
-- Ergebnis 'Today'
select cast('Today' as date) from rdb$database
-- Ergebnis z.B. 2011-10-03
select cast('TODAY' as timestamp) from rdb$database
-- Ergebnis z.B. 2011-10-03 00:00:00.0000
'TOMORROW'
DSQL, PSQL, ESQL
CHAR(8)
'TOMORROW'
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 nächsten Tages erhalten.Siehe auch [fblangref40-contextvars-today-de].
select 'Tomorrow' from rdb$database
-- Ergebnis 'Tomorrow'
select cast('Tomorrow' as date) from rdb$database
-- Ergebnis z.B. 2011-10-04
select cast('TOMORROW' as timestamp) from rdb$database
-- Ergebnis z.B. 2011-10-04 00:00:00.0000
UPDATING
PSQL
BOOLEAN
UPDATING
Nur in Triggern verfügbar, 'UPDATING' zeigt an, ob der Trigger aufgrund einer 'UPDATE'-Operation ausgelöst wurde.Vorgesehen für die Verwendung in Multi-Action-Trigger.
if (inserting or updating) then
begin
if (new.serial_num is null) then
new.serial_num = gen_id(gen_serials, 1);
end
'YESTERDAY'
DSQL, PSQL, ESQL
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].
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
DSQL, PSQL
VARCHAR(63)
USER
USER
ist eine Kontextvariable, die den Namen des aktuell verbundenen Benutzers enthält.Es entspricht vollständig [fblangref40-contextvars-current-user-de].
create trigger bi_customers for customers before insert as
begin
New.added_by = USER;
New.purchases = 0;
end
CURRENT_ROLE
DSQL, PSQL
VARCHAR(63)
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 |
if (current_role <> 'MANAGER')
then exception only_managers_may_delete;
else
delete from Customers where custno = :custno;
CURRENT_TIME
DSQL, PSQL, ESQL
TIME WITH TIME ZONE
Caution
|
Der Datentyp wurde in Firebird 4.0 von |
CURRENT_TIME [ (<precision>) ] <precision> ::= 0 | 1 | 2 | 3
Das optionale Argument precision wird in ESQL nicht unterstützt.
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
|
|
Warning
|
CURRENT_TIME und Firebird 4.0 ZeitzonenunterstützungFirebird 4.0 hat Unterstützung für Zeitzonen hinzugefügt.Als Teil dieser Unterstützung wurde eine Inkompatibilität mit dem In Firebird 4.0 gibt In Firebird 4.0 funktioniert |
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
DSQL, PSQL, ESQL
TIMESTAMP WITH TIME ZONE
Caution
|
Der Datentyp wurde in Firebird 4.0 von |
CURRENT_TIMESTAMP [ (<precision>) ] <precision> ::= 0 | 1 | 2 | 3
Das optionale Argument precision wird in ESQL nicht unterstützt.
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
|
|
Warning
|
CURRENT_TIMESTAMP und Firebird 4 ZeitzonenunterstützungFirebird 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 In Firebird 4.0 gibt In Firebird 4.0 funktioniert |
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
DSQL, PSQL
BIGINT
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.
select current_transaction from rdb$database
New.Txn_ID = current_transaction;
CURRENT_USER
DSQL, PSQL
VARCHAR(63)
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].
create trigger bi_customers for customers before insert as
begin
New.added_by = CURRENT_USER;
New.purchases = 0;
end
DELETING
PSQL
BOOLEAN
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.
if (deleting) then
begin
insert into Removed_Cars (id, make, model, removed)
values (old.id, old.make, old.model, current_timestamp);
end
GDSCODE
PSQL
INTEGER
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 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