[Info] To_Char Werte returnen aus Function

Kampfgummibaerlie

Datenbank-Guru
Beiträge
735
Habe bisher immer arbeiten wollen, dass ich die Werte in den echten (in der Datenbank gespeicherten) Werte "ausgebe", habe es aber nicht zusammengebracht, das Ganze in einer "einfachen" Insert-Query zu regeln.

Um meine Vorstellung zu erklären:
Ich hätte gerne, dass wenn eine Mietung erfolgreich "eingetragen" wurde, die gewollten Daten auch auf der Homepage angezeigt werden sollten.

In sofern habe ich mir eine Function gebaut, welche nicht die "Original in der Datenbank vorhandenen" Werte zurückgibt, sondern eben die Werte mittels to_char geändert.

Dabei ist eigentlich nur zu beachten, dass man beim Return-Typ, welcher einer Tabelle entspricht, die Werte, welche nach dem returning in einer entsprechenden to_char-Funktion genannt werden, auch den Typ Text haben.

Hier ein Beispiel, welches (für mich) funktioniert:
Code:
create or replace function mietbeginn(maschinentyp text default 'Normale', zeitpunkt timestamp default now()::timestamp)
returns table (id integer, maschinen_id integer, anfangsdatum text, anfangszeitpunkt text) as
$$
insert into vermietungen(maschinen_id, mietzeit) values (freie_maschinen_id_zu_zetpunkt_nach_typ(maschinentyp, zeitpunkt), tsrange(zeitpunkt, zeitpunkt+'4 hour'))
returning id, maschinen_id, to_char(lower(mietzeit)::date, 'DD.MM.YYYY'), to_char(lower(mietzeit)::time, 'HH24:MI')
$$
language sql;

Auch, wenn soetwas für viele klar sein sollte, ich wusste nicht, dass man auch to_char returnen kann. Die Tatsache, dass ein to_char wert immer Text returned, war schon eher klar.
 
Werbung:
Zurück
Oben