728x90
반응형
문제점 및 증상
다음과 같은 일반적인 함수를 생성하는 코드를 시험하였습니다.
CREATE OR REPLACE FUNCTION test()
RETURNS VOID LANGUAGE plpgsql AS
$$
begin
prepare plan as select 1;
EXECUTE 'execute plan';
RAISE NOTICE 'Made it';
DEALLOCATE plan;
end;
$$;
그러나 "HeidiSQL"에서는 다음과 같은 오류가 발생하며, 함수 생성이 실패하였습니다.
문제는 정상적으로 실행되어 함수가 생성되는 정상적인 코드임에도 "HeidiSQL"에서는 오류가 발생한다는 것입니다.
/* ERROR: unterminated dollar-quoted string at or near "$$
begin
prepare plan as select 1"
LINE 3: $$
^ */
해결 방안
"HeidiSQL"에서는 "$$"가 다른 용도로 사용되기 때문에, 함수 생성에서 이용할 수가 없었습니다.
대신 아래와 같이 ' (single quotation) 문자를 이용하면 함수를 정상적으로 생성할 수 있습니다.
CREATE OR REPLACE FUNCTION test()
RETURNS VOID LANGUAGE plpgsql AS
'
begin
prepare plan as select 1;
EXECUTE ''execute plan'';
RAISE NOTICE ''Made it'';
DEALLOCATE plan;
end;
';
특이한 점은 이렇게 생성한 함수를 "HeidiSQL"에서 다시 보면, "$$" 문자로 치환되어 보입니다.
'DB > PostgreSQL' 카테고리의 다른 글
백업(backup) 및 복구(restore) (0) | 2020.12.19 |
---|---|
pg_dump: too many command-line arguments (first is "arg") (0) | 2020.12.16 |