PREPARE で SQL を準備し、 EXECUTE によりパラメータのみの実行。

まつもとゆきひろコードの世界」の「11章 セキュリティについて」の中で SQL インジェクション対策として、パラメータを外部から与えて実行する例が掲載されています。
SQL インジェクション対策でなくても SQL の組み立て実行が分離され、都合が良さそうなのでテストしてみました。

$ psql dbname
Welcome to psql 8.1.18, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

dbname=> select * from club_jusho;
 code |  post   |    address     
------+---------+----------------
    0 | 9999999 | なし
    1 | 1230035 | あああ
    (略)
   18 | 1230023 | いいいい
(19 rows)

パラメータの出てくる順序に $1、$2 。パラメータの型を()の中にその順序で。

dbname=> PREPARE jusho (int) AS SELECT * FROM club_jusho WHERE code=$1;
PREPARE

パラメータに 1 を与えて実行。

dbname=> EXECUTE jusho(1);
 code |  post   |  address   
------+---------+------------
    1 | 1230035 | あああ
(1 row)

パラメータに 0 を与えて実行。

dbname=> EXECUTE jusho(0);
 code |  post   | address 
------+---------+---------
    0 | 9999999 | なし
(1 row)

定義を取り消すとき。

dbname=> DEALLOCATE jusho;
DEALLOCATE