ich kämpfe mal wieder mit functions.
Die folgende function liefert mir als Ergebnis eine Spalte(statt 4) in der alle Felder mit Komma getrennt stehen und in “(” und “)” ein gefasst sind.
CREATE OR REPLACE FUNCTION fktmitarbeiter_kombi(IN adressnr integer)
RETURNS TABLE(stma text, sttel text, stmfax text, stafax text) AS
$BODY$
Declare
IntAdressNr alias for $1;
Begin
RETURN QUERY
SELECT
"tblMitarbeiter"."Anrede" + ' ' + "tblMitarbeiter"."Nachname" AS MA,
"tblAdressenkopf"."Vorwahl" + '/' + "tblMitarbeiter"."DW" AS Tel,
"tblMitarbeiter"."Fax"::text AS mFax,
"tblAdressenkopf"."Fax"::text AS aFax
FROM
public."tblAdressenkopf"
INNER JOIN public."tblMitarbeiter" ON "tblAdressenkopf"."AdressNr" = "tblMitarbeiter"."AdressNr"
WHERE
"tblAdressenkopf"."AdressNr"=IntAdressNr
ORDER BY "tblMitarbeiter"."Nachname";
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION fktmitarbeiter_kombi(integer)
OWNER TO master;
z. B.
“(“Herr Breuer”,4971-115)”
“(“Herr Dieter Leonhardt”,0341/4971-200,4971-115)”
“(“Herr Hans Frey”,0341/4971-332,4971-115,4971-115)”
“(“Herr Haupt”,4971-115)”
“(“Herr Herzog”,0341/4971-332,4971-115,4971-115)”
“(“Herr Keyser”,4971-115)”
“(“Herr Dr. König”,0341/4971-258,4971-350,4971-115)”
Wie erreiche ich eine Rückgabe wie ein View, mit Zeilen und Spalten?
Gruß Mafi
Das mit den “+” könnte auch “&” zum “addieren” von Texten sein(so kenne ich es von Access).
z.B Feld: Anrede und " " und Feld: Nachname ergibt dann “Herr XYZ” als MA das funktioniert ja problemlos.
Mein Problem ist die Ausgabe von nur einer Spalte statt 4.
ich mach das alles mit pgAdmin.
Der Aufruf ist ok! Es werden ja Daten geliefert!
Das mit dem “+” funkioniert, steht aber “&” gibts Fehler:
FEHLER: Operator existiert nicht: character varying & unknown
LINE 2: "tblMitarbeiter"."Anrede" & ' ' & "tblMitarbeiter"."Nachna...
^
HINT: Kein Operator stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
QUERY: SELECT
"tblMitarbeiter"."Anrede" & ' ' & "tblMitarbeiter"."Nachname" AS MA,
"tblAdressenkopf"."Vorwahl" & '/' & "tblMitarbeiter"."DW" AS Tel,
"tblMitarbeiter"."Fax"::text AS mFax,
"tblAdressenkopf"."Fax"::text AS aFax
FROM
public."tblAdressenkopf"
INNER JOIN public."tblMitarbeiter" ON "tblAdressenkopf"."AdressNr" = "tblMitarbeiter"."AdressNr"
WHERE
"tblAdressenkopf"."AdressNr"=IntAdressNr
ORDER BY "tblMitarbeiter"."Nachname"
CONTEXT: PL/pgSQL function "fktmitarbeiter_kombi" line 5 at RETURN QUERY
********** Fehler **********
wenn ich das mit dem zusammengesetzen Text weg lasse, ändert das nichts an der 1-spaltigen Ausgabe.