Genau genommen gibt es kein "plpgsql-Skript" - PL / pgSQL ist die Standardprozedursprache von PostgreSQL. Es ist entweder ein SQL-Skript oder eine plpgsql-Funktion / Prozedur. Ihr Beispiel scheint auf ein SQL-Skript hinzuweisen.
Sie können stattdessen eine (serverseitige ) Funktion plpgsql (oder sql) erstellen , die eine beliebige Anzahl von Argumenten akzeptiert . Es ist sehr einfach, solange die Argumente sind values
. Es wird etwas komplizierter, wenn die Argumente Bezeichner enthalten. Dann müssen Sie PL / pgSQL mit dynamischem SQL und verwenden EXECUTE
.
PL / pgSQL ist in PostgreSQL 9.0 oder höher standardmäßig vorinstalliert. Sie müssen es jedoch einmal pro Datenbank in Postgres 8.3 installieren:
CREATE LANGUGAGE plpgsql;
Apropos Version: Sie sollten ein Upgrade auf eine aktuelle Version von PostgreSQL in Betracht ziehen . v8.3 ist mittlerweile sehr alt und endet Anfang 2013.
Da Sie anscheinend ein fertiges SQL-Skript haben, werde ich eine SQL-Funktion demonstrieren. Einfache Dummy-Funktion mit zwei ganzzahligen Argumenten:
CREATE OR REPLACE FUNCTION func(int, int)
LANGUAGE sql RETURNS void AS
$func$
UPDATE tbl1 SET col1 = $1 WHERE id = $2;
UPDATE tbl2 SET col1 = $1 WHERE id = $2;
$func$;
Viele anspruchsvollere Beispiele für plpgsql finden Sie hier auf dba.SE oder auf SO .
Sie können diese Funktion aufrufen und Parameter in einem Shell-Skript übergeben: Grundlegendes Beispiel für einen Aufruf in einem Shell-Skript, das Eingabeparameter für ganzzahlige Parameter verwendet (keine einfachen Anführungszeichen um den erforderlichen Wert):
psql mydb -c "SELECT func($1, $2)"
Oder mit einem beliebigen Datentyp:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
führt eine Befehlszeichenfolge aus und wird dann beendet. Weitere Informationen zu Befehlszeilenargumenten von psql finden Sie im Handbuch .
-v
Argument von psql.