Sebenarnya, tidak ada yang namanya "skrip plpgsql" - PL / pgSQL adalah bahasa prosedural default PostgreSQL. Entah itu skrip SQL atau fungsi / prosedur plpgsql. Contoh Anda tampaknya menunjukkan skrip SQL.
Anda bisa membuat fungsi (sisi server) plpgsql (atau sql) sebagai gantinya, yang mengambil sejumlah argumen. Ini sangat sederhana asalkan argumennya values
. Akan sedikit lebih rumit jika argumen menyertakan pengidentifikasi. Maka Anda harus menggunakan PL / pgSQL dengan SQL dinamis dan EXECUTE
.
PL / pgSQL sudah diinstal sebelumnya secara default di PostgreSQL 9.0 atau yang lebih baru. Anda harus menginstalnya sekali per basis data di Postgres 8.3, meskipun:
CREATE LANGUGAGE plpgsql;
Berbicara tentang versi: Anda harus mempertimbangkan untuk meningkatkan ke versi PostgreSQL saat ini. v8.3 sudah sangat tua sekarang, akhir kehidupan di awal 2013.
Karena Anda tampaknya memiliki skrip SQL yang siap saya akan menunjukkan fungsi SQL. Fungsi dummy sederhana dengan dua argumen integer:
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$;
Anda dapat menemukan banyak contoh yang lebih canggih untuk plpgsql di sini di dba.SE atau SO .
Anda dapat memanggil fungsi ini dan menyerahkan parameter dalam skrip shell: Contoh dasar untuk panggilan dalam skrip shell yang menggunakan parameter input untuk parameter integer (tidak ada tanda kutip tunggal di sekitar nilai yang diperlukan):
psql mydb -c "SELECT func($1, $2)"
Atau dengan tipe data apa pun:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
mengeksekusi satu string perintah dan kemudian keluar. Lebih lanjut tentang argumen baris perintah psql dalam manual .
-v
argumen psql.