PL/pgSQL 공부 - 변수

곽태욱·2021년 7월 12일
0
post-thumbnail

블록에서 사용되는 모든 변수는 블록의 DECLARE 안에 선언되어야 합니다. PL/pgSQL의 변수는 integer, varchar, char와 같은 임의의 SQL 데이터 타입을 가질 수 있으며 예시는 다음과 같습니다.

user_id int;
quantity numeric(5);
url text;
myrow 테이블이름 % ROWTYPE;
myfield 테이블이름.컬럼이름 % TYPE;
arow RECORD;

변수 선언의 일반 구문은 다음과 같습니다.

name [ CONSTANT ] 자료형 [ COLLATE collation이름 ] [ NOT NULL ] [ { DEFAULT | := | = } expression ];

변수 선언 시 DEFAULT 키워드로 블록이 시작될 때 변수에 할당된 초기 값을 지정할 수 있습니다. 만약 변수에 DEFAULT 키워드가 없는 경우 해당 변수는 NULL로 초기화됩니다. 변수의 기본값은 해당 블록이 시작될 때마다 계산되어 변수에 할당됩니다. 예를 들어, timestamp 유형의 변수에 now()를 기본값으로 지정하면, 함수가 컴파일된 시간이 아니라 현재 함수 호출 시간이 변수에 저장됩니다. DEFAULT 키워드 대신 :==도 사용할 수 있습니다.

CONSTANT 키워드가 붙은 변수는 변수 초기화 후에 변수가 다시 할당되는 것을 방지해 해당 값이 블록이 끝날 때까지 일정하게 유지됩니다.

만약 변수에 NOT NULL 키워드가 붙었는데 런타임 시 NULL 값이 할당되면 오류가 발생합니다 NOT NULL로 선언된 모든 변수는 NULL이 아닌 기본값을 지정해야 합니다.

일반적인 변수 선언 예시는 다음과 같습니다.

quantity integer DEFAULT 32;
url varchar := 'http://mysite.com';
user_id CONSTANT integer := 10;
profile
이유와 방법을 알려주는 메모장 겸 블로그. 블로그 내용에 대한 토의나 질문은 언제나 환영합니다.

0개의 댓글