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
운영게시판
최근게시물
Informix Q&A 1868 게시물 읽기
No. 1868
이 함수좀 봐주세요.. ㅠ.ㅠ
작성자
turtle
작성일
2003-12-04 12:00
조회수
5,092

CREATE FUNCTION p_test(p_a char(20))
RETURNING char(30),char(35);
DEFINE g_a  char(7);
DEFINE g_b  char(20);
DEFINE g_c  char(7);
DEFINE g_d  char(6);
DEFINE g_e  char(20);

DEFINE r_a  char(30); 
DEFINE r_b  char(35); 
DEFINE r_tmp            char(7);

LET r_a = '';
LET r_tmp = '';

FOREACH cursor1 FOR
 SELECT a, b, c, d, e
 INTO g_a, g_b, g_c, g_d, g_e
 FROM tab
 WHERE  nvl(a,'%') like trim(p_a)||'%'
 ORDER BY a

 IF r_tmp = '' THEN
  LET r_tmp = g_a;
  LET r_a = g_b +'('+g_a+')';
  LET r_b = g_c + '('+g_d+')';
 ELIF r_tmp != '' AND r_tmp = g_a THEN
  LET r_tmp = g_a;
  LET r_b = r_b + ',' + g_c + '('+g_d+')';
 ELIF r_tmp != '' AND r_tmp != g_a THEN
  RETURN r_a, r_b;
  LET r_tmp = g_a;
  LET r_a = g_b +'('+g_a+')';
  LET r_b = g_c + '('+g_d+')';
 END IF
END FOREACH
END FUNCTION

Query 결과 데이터
a      b       c     d     e
A0001  홍길동  전남  10001  T
A0001  홍길동  전북  10002  T
A0001  홍길동  경남  10003  T
A0002  김철수  전남  20001  T
A0002  김철수  전북  20002  T

결과
r_a : 홍길동(A0001)
r_b : 전남(10001), 전북(10002), 경남(10003)

r_a : 김철수(A0002)
r_b : 전남(20001), 전북(20002)

위의 함수를 돌렸을 경우 query는 위와 같이 결과가 나오고
이를 if-else를 통해
r_a : 홍길동(A0001)
r_b : 전남(10001), 전북(10002), 경남(10003)
이런식으로 한세트씩 결과를 만들고 이들을
return하구 싶은겁니다..
근데 왠지 어설프네요..
도움좀 주십시요.. ㅠ.ㅠ

 

[Top]
No.
제목
작성자
작성일
조회
1871[질문]nonstop unix - Informix IDS 7.3 사용중인데요..
[파란하늘]
2003-12-04
4612
1870[Informix] ALTER TABLE로 lock mode를 바꾸면... [1]
골뱅이
2003-12-04
6251
1869[Informix] Table의 lock mode를 알아내는 방법 [3]
골뱅이
2003-12-04
5466
1868이 함수좀 봐주세요.. ㅠ.ㅠ
turtle
2003-12-04
5092
1867create index 가 안됩니다. [2]
백미현
2003-12-04
6529
1866DBMS (oninit) 가 죽었습니다. 도와주세요
김성훈
2003-12-03
5063
1865테이블 핸들링한 시간..확인하는 방법.. 갈켜주세요...
smile
2003-12-03
4733
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다