Строго кажучи, немає такого поняття, як "скрипт plpgsql" - PL / pgSQL є мовою процедур за замовчуванням PostgreSQL. Це або сценарій SQL, або функція / процедура plpgsql. Схоже, ваш приклад вказує на сценарій SQL.
Ви можете створити функцію plpgsql (або sql) на стороні сервера , яка приймає будь-яку кількість аргументів. Це дуже просто, доки є аргументи values
. Це стає трохи складніше, якщо аргументи включають ідентифікатори. Тоді вам доведеться використовувати PL / pgSQL з динамічним SQL і EXECUTE
.
PL / pgSQL попередньо встановлено за замовчуванням у PostgreSQL 9.0 або новіших версіях. Ви повинні встановити його один раз у базі даних у Postgres 8.3, однак:
CREATE LANGUGAGE plpgsql;
Якщо говорити про версію: вам слід розглянути можливість оновлення до поточної версії PostgreSQL. v8.3 вже дуже старий, на кінець життя на початку 2013 року.
Оскільки у вас, здається, є готовий сценарій SQL, я продемонструю функцію SQL. Проста фіктивна функція з двома цілими аргументами:
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$;
Ви можете знайти ще багато складних прикладів для plpgsql тут на dba.SE або на SO .
Ви можете викликати цю функцію та ввести параметри в сценарії оболонки: Основний приклад для виклику в скрипті оболонки, який використовує вхідні параметри для цілих параметрів (жодних лапок навколо значення не потрібно):
psql mydb -c "SELECT func($1, $2)"
Або з будь-яким типом даних:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
виконує один командний рядок, а потім виходить. Детальніше про аргументи командного рядка psql в посібнику .
-v
аргумент psql.