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 6653 게시물 읽기
No. 6653
파라메타 없는 함수 만드는 법 ??
작성자
장창원(cybodime)
작성일
2006-05-02 13:51
조회수
3,146

안녕하세요. PostgreSQL 을 접한지 얼마 안되는 사용자 입니다.

함수중에 current_date 같은 것들은 뒤에 파라메타 없이 괄호도 없이 호출할 수 있고 결과도 나옵니다.

이런 함수를 사용자 함수로 어떤식으로 작성하는지 궁금합니다.

참고로 파라메타를 void 로 하면 함수를 만들수 없다고 나오고, 아예 파라메타를 쓰지 않더라도,

실행시킬때 괄호는 쳐줘야 합니다.

select testfunc(); 와 같이 말입니다.

제가 알고싶은건 select testfunc; 로 쓸 수 있는 방법입니다.

 

감사합니다.

 

 

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

create function mytest1() returns text as 'select ''asdf''::text' language 'sql';

 

만들어지는데요.

 

current_date, current_user 같은 경우는 함수라기 보다는 예약어입니다.

 

current_database() 로 살펴보시면, 예약어와 함수의 차이를 알 수 있을 것같네요.

김상기(ioseph)님이 2006-05-02 17:18에 작성한 댓글입니다.

답변 감사합니다.

 

그런데,

select mytest1;

로 실행하면

ERROR:  column "mytest1" does not exist

라고 나옵니다.

select mytest1();

로 하면 되구요...

 

다시 말씀드리자면, select mytest1;

로 실행시키고 싶습니다. 괄호 없이요...^^;;

 

그런데 혹시 이게 버전따라 틀립니까?? 저는 8.1 최신버전으로 어제 설치했거든요...

 

감사합니다.

장창원(cybodime)님이 2006-05-02 18:29에 작성한 댓글입니다.

버전마다 예약어가 틀려서 그럴겝니다.

 

윗 경우, mytest1 놈을 예약어로 등록해야할 것같네요. 그럼 가능할 법도 하네요.

그럴려면, sql 파싱 부분을 고쳐야할 듯싶습니다.

그런 수고까지 해가면서 써야할 이유가 없을 것같네요.

 

김상기(ioseph)님이 2006-05-02 19:28에 작성한 댓글입니다.

답변 감사합니다.

제가 지금 ms-sql 을 postgreSQL 로 옮기면서, 함수와 프로시저를 그대로 가져올려고 하거든요...

그럭저럭 만들다가, 날짜 함수에서 막혔습니다.

일단

DateAdd(datepart, number, date) 

란 함수가 있는데, 여기서 datepart 가 문제입니다. 이놈이 스트링이 아니고 예약어의 형태라

select DateAdd(yy, 10, getdate());

라고 적으면 연도에 10을 더해서 날짜를 만들어 냅니다.

DateAdd('yy', 10, getdate()) 라면 그냥 만들면 되지만, yy 는 그냥 쓸 수가 없어서 그럽니다. 괄호없는 함수나 예약어를 만들 수 있으면 'yy' 를 반환하는 놈을 varchar funcyy() 와 같이 만들어서,

DataAdd(funcyy, 10, current_date)

와 같이 호출하면 되겠지요...

 

이런식으로 쓸 수 있는 방법이나 예약어를 등록하는법이나 sql 을 파싱하는법 등 가능한대로 좀 알려주세요...

 

감사합니다.

장창원(cybodime)님이 2006-05-02 20:13에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6657postgres 다운받는곳 아시는분.. [1]
이현석
2006-05-03
2556
6655An error occured in the logger.ERROR: relation "activity_log" does not exist [1]
박진석
2006-05-02
3142
6654유닉스 타임 [3]
김명범
2006-05-02
2961
6653파라메타 없는 함수 만드는 법 ?? [4]
장창원
2006-05-02
3146
6650vc api로 응용프로그램 만들기 좀 도와주세요 [3]
심상호
2006-04-27
3625
6648LDAP기능 사용해보신분. [1]
조우현
2006-04-26
2475
6647테이블 스페이스 생성에 대한 질문.. [2]
채민석
2006-04-26
3532
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다