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 6733 게시물 읽기
No. 6733
select 시에 검색조건이 없을경우 문제 입니다
작성자
권용재(amadeusj)
작성일
2006-06-09 15:52
조회수
3,419

SP 에서 select 된결과를 리턴받으려 하는데

select .. from DBClassTestTable where iIndex1 = X
로 하나의 레코드만 리턴을 합니다
근데 해당되는 레코드가 없을경우에 레코드가 리턴 안되게 할수는 없나요?

해당되는 조건이 없을때 각각의 필드에 NULL 이 들어가서 레코드가 리턴이 되네요.
NULL 자체가 들어간 레코드도 리턴안되게 하려합니다
방법이 없을까요?


CREATE OR REPLACE FUNCTION TEST_ONE_SELECT(
/* INPUT */
PARAMINDEX1 int
/* OUTPUT */
)
RETURNS RECORD as
$BODY$
DECLARE
rec RECORD;
BEGIN

select into rec iIndex2, szName1, szName2, binData1, binData2, binData3 from DBClassTestTable
where iIndex1 = PARAMINDEX1;

-- 데이타가 없을 경우
IF rec IS NULL THEN
RETURN NULL;
ELSE
RETURN rec;
END IF;

END;
$BODY$
language plpgsql;

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

exception 처리로 해당 함수의 호출이 비정상적으로 끝났다고 처리하고,

응용프로그램이 그 함수의 호출이 비정상적이면, null 이다고 판단하면 될듯싶네요.

 

김상기(ioseph)님이 2006-06-09 18:34에 작성한 댓글입니다.

답변 감사합니다

근데 SP 쪽에서 해당되는 레코드가 없을경우 NULL 레코드를 리턴하게되면 Application 쪽에서는 일단 레코드가 왔기때문에 받게됩니다

그래서 Application 쪽에서는 처리하기가 힘듭니다

Application 쪽에서는 결과가 없을때 아예 레코드를 받으면 안되거든요..ㅠㅠ

SP 쪽에서는 해결방법이 없나요?

권용재(amadeusj)님이 2006-06-09 19:03에 작성한 댓글입니다.
이 댓글은 2006-06-09 19:03에 마지막으로 수정되었습니다.

혹시나 해서 말씀드리는데;;

데이터가 없을 경우 return null; 이 아니라 return; 으로만 해보세요..

그렇게 해도 null row 가 리턴되면 for 를 쓰셔서 루프를 돌리듯이 처리해보시기 바랍니다..

신기배(소타)님이 2006-06-09 19:07에 작성한 댓글입니다.

그냥 return 만하면 에러가 납니다

for 를 쓰셔서 루프를 돌리듯이 처리해보시기 바랍니다..

는 어떤방법을 말씀하시는건지 잘모르겠네요..

간단한 예제좀 부탁 드리겠습니다

권용재(amadeusj)님이 2006-06-09 19:18에 작성한 댓글입니다.

CREATE OR REPLACE FUNCTION TEST_ONE_SELECT(
  /* INPUT */
  PARAMINDEX1 int
  /* OUTPUT */
)
RETURNS SETOF RECORD as
$BODY$
DECLARE
  rec RECORD;
BEGIN

  for rec in select iIndex2, szName1, szName2, binData1, binData2, binData3 from DBClassTestTable where iIndex1 = PARAMINDEX1 loop

    return next rec;

  end loop;

 

END;
$BODY$
language plpgsql;

 

빨간 부분이 바뀐 부분이구요. return null; 을 아예 뺐습니다.

한번 해보세요.. 테스트는 안해봤습니다.

신기배(소타)님이 2006-06-09 19:35에 작성한 댓글입니다.

답변 감사합니다

그방법을 예전에 제가 해봤던거 같은데 그때는 에러가 났었는데...

지금 은 잘되네요~

감사합니다~^^

권용재(amadeusj)님이 2006-06-10 09:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6736SELECT Query 에서 빠른 효과를... [1]
BlueBrid
2006-06-12
3403
6735db연결이 자꾸 끊겨요...? [1]
나그네
2006-06-12
3232
6734같은 검색결과가 두개씩 [2]
버들
2006-06-10
2967
6733select 시에 검색조건이 없을경우 문제 입니다 [6]
권용재
2006-06-09
3419
6732php에서 pgpool 사용에 대한 질문 [1]
vortex
2006-06-09
3030
6731유니코드 등에 대한 질문입니다. [5]
김종화
2006-06-09
8017
6729SP 호출하여 select 된 결과값받기 [3]
권용재
2006-06-09
3532
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다