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
운영게시판
최근게시물
MySQL Q&A 29764 게시물 읽기
No. 29764
case가 들어간 function 생성시 에러 입니다.
작성자
김영범(bumworld)
작성일
2010-08-23 10:31
조회수
7,214



drop function IF EXISTS get_shop_name;
create function get_shop_name(v_parent_type char(3), v_parent_no integer) returns varchar(200)
begin
    declare v_shop_name varchar(200) default '';
    case  when '002' = v_parent_type THEN
        select name into v_shop_name from tb_shop where shop_no = v_parent_no;
    else ''
    return v_shop_name;
end;

mysql 5.x 사용하고 있습니다.

제가 문법을 잘못 사용한것 같은데요.


v_parent_type이 002 일때 v_parent_no를 가지고 이름을 가져오는 함수를 만들고 있습니다.

(002가 이닌경우는 그냥 ''(공백)을 리턴할려고 합니다,)

case when 을 이용했는데 어디에서 잘못된건지 모르겠습니다.

어디가 문제인지 도움좀 부탁드립니다..
 

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

 else '' 대신 end case; 하시면 될 것 같습니다.

(그나저나 DELIMITER 변경 없이 잘 되나요?)

박현우(lqez)님이 2010-08-24 17:58에 작성한 댓글입니다.

우왓..답변 감사합니다..

저..그런데 else 일때는 에러가 발생하는데요..

parent_type 이 002 일때는 제대로 값이 나오는데

else 일때 에러가 발생합니다.

else 일때도 공백을 return 해줘야 할듯한데..

어떻게 수정하면 좋을지요?

김영범(bumworld)님이 2010-08-26 10:06에 작성한 댓글입니다.
이 댓글은 2010-08-26 10:11에 마지막으로 수정되었습니다.

case when '002' = ...[중략]

else

select '' into v_shop_name;

end case;

return ....

 

으로 하시면 될 것 같습니다.

박현우(lqez)님이 2010-08-26 10:23에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29767length() 결과로 0 과 null 의 차이점 [1]
greenluck
2010-08-24
6756
297662008서버 관련 질문 [1]
푸르미
2010-08-23
6458
29765같은 구조의 테이블에서.. [1]
조중연
2010-08-23
6732
29764case가 들어간 function 생성시 에러 입니다. [3]
김영범
2010-08-23
7214
29763INNODB ibdata 관련 질문입니다. [1]
이왕태
2010-08-20
7236
29762전체랭킹, 그룹별랭킹을 동시에 보여주고 싶습니다 [1]
소팔복
2010-08-20
7089
29761table a에서 2479번 레코드를 삭제하는 명령어가 있나요? [4]
BlueSpy
2010-08-20
6380
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다