database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6287 게시물 읽기
No. 6287
따옴표 관련 질문..
작성자
장재혁(jaejen)
작성일
2005-08-25 14:39
조회수
3,568

querystr := ''update '' || TG_ARGV[0] || '' set empname = '' || NEW.empname ||

'', salary = '' || NEW.salary ||

'' , last_date = to_date('' || NEW.last_date ||'' ,''''YYYYMMDDHHMISS'''')

::timestamp'' || '' ,last_user = '' || NEW.last_user ||

'' where empname = '' || OLD.empname'';
execute querystr;

 

위 문장을 실행했더니...

 

 

psql:triggertest.txt:67: ERROR: syntax error at or near "';
execute querystr;
end if;
if OLD.empname <> NEW.empname then
querystr := '" at character 187
QUERY: SELECT 'update ' || $1 || ' set salary = ' || $2 || ' ,last_date = to_date(' || $3 || ' ,''YYYYMMDDHHMISS'')::
timestamp' || ' ,last_user = ' || $4 || ' where empname = ' || $5 ';
execute querystr;
end if;

이렇게 에러가 납니다...

ㅡㅡ;

대체 따옴표 어디가 문제인지...이해가 안됩니다.

다른 글도 참조해 봤는데...문자열 열결할때 ''문자열'' || ''문자열'' <- 이런식이 아닌지요..

YYYYMMDDHHMISS <- 여기다가는 몇개의 따옴표를 붙여야 하는 건지요..

2,3,4,6 개 까지 붙여봤습니다.

 

이 글에 대한 댓글이 총 3건 있습니다.

'' 로 '를 이스케입 하시는걸 보니 7.x 버전으로 보입니다..

혹시 8.x버전이라면 함수의 시작에 $BODY$ 로 감싸주시면 '를 ''로 안쓰셔도 됩니다. 보아하니 syntax 에러 같은데 이 방법으로 범할 수 있는 오류를 줄여보심이.. 아래처럼 쓰시면 됩니다.. 7.x에서는 '' 로 해줘야 하는 부분들이 ' 로 되어 있습니다..

 

CREATE OR REPLACE FUNCTION "public"."func_page_depend_tree_query" (integer, integer, integer, text, text) RETURNS SETOF "pg_catalog"."record" AS
$body$
DECLARE
  nodes record;
  childNode record;
  sqlQuery text;
  childSqlQuery text;
BEGIN
  if $1 is null or $1=0 or $2 is null or $2=0 then
    return;
  end if;   sqlQuery:= 'select pid, parent, ' || $3 || ', ' || $4 || ' from view_page where gid=' || $1 || ' and parent=' || $2 || 'order by seq';   for nodes in execute sqlQuery loop
   return next nodes;      childSqlQuery:= 'select * from func_page_depend_tree_query('||$1||', '||nodes.pid||', '||$3+1||', '''||$4||''', '''||$5||''') as page_depend(pid int, parent int, depth int, '||$5||')';      for childNode in execute childSqlQuery loop
       return next childNode;
     end loop;   end loop;   RETURN;
END
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
신기배(소타)님이 2005-08-25 22:13에 작성한 댓글입니다.
이 댓글은 2005-08-25 22:14에 마지막으로 수정되었습니다.

ㅜ.ㅜ

답변 감사합니다...

 

이시간까지 삽질해서...겨우...정상적으루 실행시켰는데....ㅜ.ㅜ

 

그런 쉬운 방법이....ㅡㅡ;;

더군다나...저두 8.x를 쓰고 있는데...

 

휴......................

 

장재혁(jaejen)님이 2005-08-26 00:52에 작성한 댓글입니다.

가르쳐 주신 방법을 적용하고나서..

 

아직까지 삽질하고 있습니다..

 

ㅠ.ㅠ

아래 delete 문장은 대체 어디가 잘못된건가요??

두번째 아래 문장(insert)은 정상 실행되는데...

왜 delete문장은 구문에러 메시지가 나올까요.......???????????????

 

'delete from ' ||TG_ARGV[0]|| ' where empname = ''' || OLD.empname || ''';

 

'insert into ' ||TG_ARGV[0]|| ' values(''' || NEW.empname || ''' ,' || NEW.salary || ' ,to_date(''' || NEW.last_date || ''',''YYYY-MM-DD HH24:MI:SS'')::timestamp ,''' || NEW.last_user || ''')';

장재혁님이 2005-08-26 06:52에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6291구문에러..
장재혁
2005-08-25
1804
6290DB접속 질문합니다. [1]
neo
2005-08-25
3079
6288어리석은 질문 같지만...ㅡㅡ;; [1]
장재혁
2005-08-25
2326
6287따옴표 관련 질문.. [3]
장재혁
2005-08-25
3568
6286postgresql8.0.3 윈도우XP에 자동설치방법(배포) [2]
정준
2005-08-24
2831
6285[질문]이미지 저장 방법..? [3]
유진성
2005-08-24
2559
6284수정 시 아래와 같은 에러메시지가 나옵니다. [2]
김창욱
2005-08-24
2550
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다