오라클과 다르게 PostgreSQL 에서는 바인드 변수 기호로 $ 를 씁니다.
아래 처럼 바인드변수 있는 SQL 문에 대해 예상 실행계획을 떠보면 에러납니다.
scottdb=> explain select * from emp where empno=$1;
ERROR: there is no parameter $1
LINE 1: explain select * from emp where empno=$1;
이런 경우에는 prepare 단계를 더 거쳐야 하며, 바인드 변수값 또한 알아야 합니다.
바로 예제를 보시죠
scottdb=> prepare stmt(int) as select * from emp where empno=$1;
PREPARE
scottdb=> explain execute stmt(7902);
QUERY PLAN
----------------------------------------------------
Seq Scan on emp (cost=0.00..1.18 rows=1 width=37)
Filter: (empno = 7902)
(2 rows)
scottdb=> deallocate stmt;
오라클에 비해 이점은 좀 번거롭네요. 바인드변수값을 모두 찾아서 할당해야 한다니..으..