복붙노트

[SQL] 다람쥐 PostgreSQL의 함수 정의 : 종단되지 않은 달러 인용 된 문자열

SQL

다람쥐 PostgreSQL의 함수 정의 : 종단되지 않은 달러 인용 된 문자열

나는 PostgreSQL을 9.3.4 데이터베이스에 대한 다음과 같은 함수 정의를 가지고 :

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS $$
  BEGIN
    NEW.modified_at = now();
    RETURN NEW; 
  END;
$$ LANGUAGE plpgsql;

내가 (3.5.3 또는 3.6) 다람쥐에서 이것을 실행하려고하면, 나는 다음과 같은 오류가 발생합니다 :

Error: ERROR: unterminated dollar-quoted string at or near "$$
 BEGIN
     NEW.modified_at = now()"
  Position: 77
SQLState:  42601
ErrorCode: 0

지금까지 나는 이것이과 같이 함수 본문을 구분하는 작은 따옴표를 사용하여 완화 될 수 배웠습니다 :

CREATE OR REPLACE FUNCTION update_modified_timestamp()  
RETURNS TRIGGER AS '
  BEGIN
    NEW.modified_at = now();
    RETURN NEW; 
  END;
' LANGUAGE plpgsql;

그럼에도 불구하고 나는이 그렇지 않으면 해결할 수없는 경우 알고 싶다 - 나는 철새 이동 경로는이 스크립트를 실행할 수 있으며 다람쥐에 구성된 동일한 JDBC 드라이버를 사용하기 때문에이 가능해야한다 생각합니다.

업데이트 : @a_horse_with_no_name이 오류가 있지만 다람쥐는 SQL 문을 구문 분석하고 데이터베이스에 전송하기 전에 체크에 분할하는 방법으로, JDBC 드라이버와는 아무 상관이 없다고 지적했다. 따라서 나머지 질문은 : 캔 다람쥐는 쿼리 원료 / 구문 분석되지 않은 보내? 나는 꽤 그렇게 할 수있는 방법을 찾을 수 없습니다 검색했습니다.

해결법

  1. ==============================

    1.문이에 분할되지 않도록 당신은 문 구분을 변경할 수 있습니다 :

    문이에 분할되지 않도록 당신은 문 구분을 변경할 수 있습니다 :

    로 이동 : 세션 → 세션 등록 정보 → SQL → 문 구분

    당신이 빈 문자열로 변경할 수 있지만, 당신은 문제의 문장의 실행을 허용 //에 예, 그것을 변경할 수 있습니다.

  2. from https://stackoverflow.com/questions/30211053/postgresql-function-definition-in-squirrel-unterminated-dollar-quoted-string by cc-by-sa and MIT license