厳密に言うと、「plpgsqlスクリプト」などはありません。PL/ pgSQLはPostgreSQLのデフォルトの手続き型言語です。SQLスクリプトまたはplpgsql関数/プロシージャです。あなたの例はSQLスクリプトを示しているようです。
代わりに、任意の数の引数を取る(サーバー側の)plpgsql(またはsql)関数を作成できます。引数がである限り、それは非常に単純values
です。引数に識別子が含まれている場合は、少し複雑になります。次に、動的SQLでPL / pgSQLを使用する必要があります。EXECUTE
ます。
PL / pgSQLは、デフォルトでPostgreSQL 9.0以降にプリインストールされています。ただし、Postgres 8.3では、データベースごとに1回インストールする必要があります。
CREATE LANGUGAGE plpgsql;
バージョンと言えば、アップグレードを検討する必要があります PostgreSQLの現在のバージョンをあります。v8.3は非常に古く、2013年の初めにはサポートが終了しています。
SQLスクリプトの準備ができているようですので、SQL関数のデモを行います。2つの整数引数を持つ単純なダミー関数:
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
1つのコマンド文字列を実行して終了します。マニュアルのpsqlのコマンドライン引数の詳細。
-v
psql の引数を探していると思います。