Database Reference
In-Depth Information
postgres/add_event.sql
CREATE OR REPLACE FUNCTION add _ event( title text , starts timestamp ,
ends timestamp , venue text , postal varchar (9), country char (2) )
RETURNS boolean AS $$
DECLARE
did _ insert boolean := false;
found _ count integer ;
the _ venue _ id integer ;
BEGIN
SELECT venue _ id INTO the _ venue _ id
FROM venues v
WHERE v.postal _ code=postal AND v.country _ code=country AND v.name ILIKE venue
LIMIT 1;
IF the _ venue _ id IS NULL THEN
INSERT INTO venues (name, postal _ code, country _ code)
VALUES (venue, postal, country)
RETURNING venue _ id INTO the _ venue _ id;
did _ insert := true;
END IF ;
-- Hinweis: kein „Fehler“ wie bei einigen Programmiersprachen
RAISE NOTICE 'Venue found %' , the _ venue _ id;
INSERT INTO events (title, starts, ends, venue _ id)
VALUES (title, starts, ends, the _ venue _ id);
RETURN did _ insert;
END ;
$$ LANGUAGE plpgsql;
Sie können diese externe Datei in das aktuelle Schema mit der folgenden
Kommandozeile einfügen (wenn Sie nicht den ganzen Code abtippen wollen):
book=# \ i add _ event.sql
Wenn Sie ihn ausführen, sollte er t (true, also wahr) zurückgeben, da der
Veranstaltungsort Run's House neu ist. Das ersetzt das Senden zweier SQL-
Befehle (ein select gefolgt von einem insert) vom Client durch einen.
SELECT add _ event( 'House Party' , '2012-05-03 23:00' ,
'2012-05-04 02:00' , 'Run''s House' , '97205' , 'us' );
Die Sprache, in der wir die Prozedur entwickelt haben, ist PL/pgSQL (was
für Procedural Language/PostgreSQL steht). Die Details einer ganzen Pro-
grammiersprache abzuhandeln, würde unseren Rahmen sprengen, aber Sie
können alles darüber in der PostgreSQL-Onlinedokumentation nachlesen. 3
Neben PL/pgSQL unterstützt Postgres drei weitere Kernsprachen für die Ent-
wicklung von Prozeduren: Tcl, Perl und Python. Für dutzende anderer Spra-
3. http://www.postgresql.org/docs/9.0/static/plpgsql.html
Search WWH ::




Custom Search