Estrictamente hablando, no existe un "script plpgsql": PL / pgSQL es el lenguaje de procedimiento predeterminado de PostgreSQL. Es un script SQL o una función / procedimiento plpgsql. Su ejemplo parece indicar un script SQL.
En su lugar, puede crear una función plpgsql (o sql) (del lado del servidor) que tome cualquier número de argumentos. Es muy simple siempre que los argumentos lo sean values
. Se vuelve un poco más complicado si los argumentos incluyen identificadores. Entonces tendrá que usar PL / pgSQL con SQL dinámico y EXECUTE
.
PL / pgSQL está preinstalado de forma predeterminada en PostgreSQL 9.0 o posterior. Sin embargo, debe instalarlo una vez por base de datos en Postgres 8.3:
CREATE LANGUGAGE plpgsql;
Hablando de la versión: debería considerar actualizar a una versión actual de PostgreSQL. v8.3 es muy antiguo por ahora, al final de su vida útil a principios de 2013.
Como parece tener un script SQL listo, demostraré una función SQL. Función ficticia simple con dos argumentos enteros:
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$;
Puede encontrar muchos ejemplos más sofisticados para plpgsql aquí en dba.SE o en SO .
Puede llamar a esta función y entregar parámetros en un script de shell: ejemplo básico para una llamada en un script de shell que utiliza parámetros de entrada para parámetros enteros (no se necesitan comillas simples alrededor del valor):
psql mydb -c "SELECT func($1, $2)"
O con cualquier tipo de datos:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
ejecuta una cadena de comando y luego sale. Más información sobre los argumentos de línea de comandos de psql en el manual .
-v
argumento de psql.