DB/PostgreSQL

"HeidiSQL"에서 함수(function) 생성 실패 문제

채윤아빠 2021. 4. 4. 10:56
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