Anleitung zu Create Function gesucht

Hi,

hat jemand einen Link zu einer guten Anleitung für Create Funktion? Oder existiert evtl. eine Sammlung von Funktionen, die ich mal anschauen kann?

Wenn ich z. B. einen Update-Befehl ausführe, dann soll lt. Handbuch die Anzahl der geänderten Zahlen in update count zurückgeliefert werden.

Wenn ich aber per
IF update count>0 then

weiterarbeite, bekomme ich nur Fehler.

Wie kann ich ein Datum als varchar im Format yyyymmdd berechnen? Mein Versuch per:

heute=current_date;
c_heute=convert(varchar,10000EXTRACT(YEAR FROM TIMESTAMP,heute)+100EXTRACT(MONTH FROM TIMESTAMP ,heute)+EXTRACT(DAY FROM TIMESTAMP ,heute));

liefert auch nur Fehler.

Danke

Anzahl betroffener Rows eines Updates:
PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: Basic Statements

Formatierung von Datum:

postgres=# select to_char(now(), 'YYYYmmdd');
 to_char
----------
 20101123
(1 row)

Andreas

Was gefällt Dir am Handbuch nicht?
Da sind doch Beispiele drin: PostgreSQL: Documentation: Manuals: PostgreSQL 9: CREATE FUNCTION


Schau dir mal diese Seite an: Category:Snippets - PostgreSQL Wiki


convert … liefert auch nur Fehler

Das funktioniert ausschliesslich mit Microsoft SQL Server.

Außerdem hat (zumindest) pl/pgSQL ein := statt einem = in Verwendung.


Sicher das du hier im richtigen Forum bist? Hier geht es um PostgreSQL, nicht um MS-SQL Server.

Bei Wertzuweisungen? Ein = geht auch.

Andreas

Hi,

danke für die Hinweise. Das Wiki werde ich morgen mal durcharbeiten.

Die englische Doku bringt mit nicht viel, da ich mich in den Postgre-Speziellen Befehlen nicht auskenne. Da suche ich was in meiner Sprache.

Das c_heute= to_char(now(), ‘YYYYmmdd’); produziert wenigstens keinen Fehler, allerdings liefert die erstellte Funktion nichts zurück, eigentlich habe ich RETURNS varchar angegeben!?

Und zeigst Du uns den kompletten Code für die Funktion, oder müssen wir warten bis unser Glaskugeln wieder funktionieren?

Im Übrigen sagt man entweder Postgres, PostgreSQL oder einfach pg.
Aber niemals Postgre (ohne s) …

Hi,

ich habe es jetzt hinbekommen. Der Code läuft soweit:

CREATE OR REPLACE FUNCTION showit (pos varchar)
RETURNS void AS $$
DECLARE
c_heute varchar;
erg int;
ex_sql varchar;

BEGIN
c_heute= to_char(now(), ‘YYYYmmdd’);

ex_sql=‘update pg set x’||pos||’=x’||pos||’+1 where datum=’||c_heute;
EXECUTE ex_sql;
GET DIAGNOSTICS up_ok = ROW_COUNT;
IF up_ok=0 THEN
ex_sql=‘INSERT into pg (datum, x’||pos||’) VALUES (’||c_heute||’,1)’;
EXECUTE ex_sql;
END IF;
END;
$$ LANGUAGE plpgsql;

Danke.