A rigor di termini, non esiste un "script plpgsql": PL / pgSQL è il linguaggio procedurale predefinito di PostgreSQL. È uno script SQL o una funzione / procedura plpgsql. Il tuo esempio sembra indicare uno script SQL.
È possibile invece creare una funzione plpgsql (o sql) ( lato server) che accetta un numero qualsiasi di argomenti. È molto semplice purché gli argomenti lo siano values
. Diventa un po 'più complicato se gli argomenti includono identificatori. Quindi dovrai usare PL / pgSQL con SQL dinamico e EXECUTE
.
PL / pgSQL è preinstallato di default in PostgreSQL 9.0 o versioni successive. Devi installarlo una volta per database in Postgres 8.3, però:
CREATE LANGUGAGE plpgsql;
A proposito della versione: dovresti prendere in considerazione l'aggiornamento a una versione corrente di PostgreSQL. v8.3 è ormai molto vecchio, fine vita all'inizio del 2013.
Dato che sembri avere uno script SQL pronto, ti mostrerò una funzione SQL. Funzione fittizia semplice con due argomenti interi:
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$;
Puoi trovare molti esempi più sofisticati per plpgsql qui su dba.SE o su SO .
È possibile chiamare questa funzione e consegnare i parametri in uno script di shell: Esempio di base per una chiamata in uno script di shell che utilizza parametri di input per parametri interi (senza virgolette singole attorno al valore necessario):
psql mydb -c "SELECT func($1, $2)"
O con qualsiasi tipo di dati:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
esegue una stringa di comando e quindi esce. Maggiori informazioni sugli argomenti della riga di comando di psql nel manuale .
-v
argomento di psql.