SQL-Funktionen mit zusammengesetzten Typen

hallo,
ich habe folgende Funktion:

CREATE OR REPLACE FUNCTION aufgaben_ausgabe_funktion
(INTEGER, VARCHAR, DATE)
RETURNS tab_aufgaben AS $$
   SELECT $1 as Nr, $2 as Aufgabe, $3 as Abgabetag;
$$ LANGUAGE sql;

Die dazugehörende Tabelle ist:

CREATE TABLE tab_aufgaben(
   Nr Serial,
   Aufgabe Varchar,
   AbgabeTag Date
);

ich will folgenden Aufruf machen:

SELECT *, AbgabeTag(aufgaben_ausgabe_funktion(1,'Beleg2', '2011-03-02')) as neuer_Abgabetag 
FROM tab_aufgaben 
WHERE Nr=1;
  1. Problem: er erkennt das Nr nicht in der Tabelle tab_aufgabe
  2. Problem: wenn ich die Where-Bbedingung wegmache, glaubt er, AbgabeTag( sei eine Funktion

FEHLER: Funktion abgabetag(tab_aufgaben) existiert nicht
LINE 1: SELECT *, AbgabeTag(aufgaben_ausgabe_funktion(1,‘Beleg2’, '2… >

Ich habe mich an die Anleitung in einem PostgreSQL-Buch gehalten und auch hier nochmal nachgesehen: SQL-Funktionen

Was mach ich falsch?
Ich hoffe, ihr könnt mir helfen.

Was willst Du eigentlich damit erreichen?

Andreas

Ich habe die Lösung gefunden: ich muss die Spaltennamen in Anführungsstriche “” schreiben.
Das finde ich ein wenig seltsam, weil in meinem Buch und auch in der oben genannten Internetseite wird das nicht gemacht.

Ich vermute mal, Du hast die Tabelle mit PGAdmin oder so angelegt. Dabei werden, falls Großbuchstaben in Bezeichnern verwendet werden, diese gequotet, und damit landen die Bezeichner dann so auch in dieser Form in der Datenbank. Ab dann mußt Du das dann immer quoten.


Andreas