Ergebnisse 2 Functions mittels einer Function ausführen

Kampfgummibaerlie

Datenbank-Guru
Beiträge
731
Soda, nachdem ich inzwischen wieder am Ball bin, hätte ich mein nächstes Anliegen:

Ich habe eine Function (tsrange_diff_kostenrechnung) und würde aber gerne über eine function diese genannte function abrufen, und auch die Dauer der Miete anzeigen lassen (sprich die Mietdauer).

So ca. nach dieser Art:

Mietdauer
tsrange kosten
1.1.17 08:00, 1.1.17 14:00 72€

(12€ Kosten pro Stunde)

Geht das irgendwie? :/

Würde das gerne mittels einer 3. Function aufrufen.
 
Werbung:
Vermutlich liegt es an der Hitze - aber so ganz versteh ich Deine Frage vielleicht nicht. Aber: ja, man kann Funktionen auch verschachteln.

Code:
test=# create function f1(i int) returns int as $$begin return i+i;end$$language plpgsql;
CREATE FUNCTION
test=# create function f2(i int) returns int as $$begin return i+i;end$$language plpgsql;
CREATE FUNCTION
test=# create function f3(i int) returns int as $$begin return i+i;end$$language plpgsql;
CREATE FUNCTION
test=# select f3(f2(f1(2)));
 f3
----
 16
(1 row)

test=#

Grüße aus dem fränkischen ...
 
Ich glaube, mir tut die Hitze auch nicht gut ;)

Also, ich möchte in >eine< Funktion einbauen, folgendes Script (funktioniert, wenn ich es so in die SQL-Box eingebe):
Code:
select tsrange_diff_Kostenrechnung(mietzeit), timestamprange_diff(mietzeit), mietzeit from vermietungen

sprich, dass sobald ich die function "mietbeendigung" abrufe, er mir die Dauer in Minuten, die Kosten für die Zeit und die Timestamprange anzeigen, in welcher gemietet wurde.

Ich habe folgende Probleme beim erstellen einer Funktion:
1.: Er meint, der Rückgabetyp passt nicht
2.: Er sagt, es sollen mehr Spalten rauskommen, als "erlaubt" sind
3.: Noch irgendwas, weiß ich aber nichtmehr ... :(

Kann man in einer Funktion irgendwie mehrere Rückgabespalten angeben? Bisher hatten alle Funktionen, die ich erstellt habe, nur eine Spalte...... (glaube ich)

EDIT: Anbei fallt mir auf, der Titel war recht undeutsch gewählt xD
 
Zuletzt bearbeitet:
Werbung:
ja.

Code:
test=# create or replace function demo(i int) returns table (i2 int, i3 int, i4 int)  as $$ select i*i, i*i*i, i*i*i*i $$ language sql;
CREATE FUNCTION
test=# select * from demo(3);
 i2 | i3 | i4
----+----+----
  9 | 27 | 81
(1 row)

test=#
 
Zurück
Oben