loop문에서 if/else 문 해석 좀 도와주세요. 0 2 1,991

by 반집의승리 [PL/SQL] PL/SQL ORACLE [2020.12.21 14:33:19]


안녕하세요! loop문에서 if문 해석이 잘 되지 않아서 질문을 하려고 글을 올립니다.

우선 테이블은 다음과 같습니다.

brewery_id brewery_name product_id product_name
518 balthazar 5310 a
518 balthazar 5430 b
518 balthazar 6520 c
523 happy 6600 d
523 happy 7790 e
523 happy 7870 f
536 brewing 4040 g
536 brewing 4160 h
536 brewing 4280 i
536 brewing 7950 j

이 테이블에서 결과적으로 brewery_name이 같은 것끼리 product_name넣어서 product_list를 출력하는 쿼리에서(예를들면 brewery_name이 happy라면 product_list안에 d,e,f 출력) 

if else문을 제가 이해를 잘 하고 있는건지 모르겠습니다.

create or replace type name_coll_type
as table of varchar2(80 byte);

create or replace function name_coll_type_to_varchar2(
p_name_coll in name_coll_type
,p_delimiter in varchar2 default null)

return varchar2

is

v_name_string varchar2(4000 char);

begin
    for idx in p_name_coll.first..p_name_coll.last
    loop
        if idx = p_name_coll.first then
            v_name_string := p_name_coll(idx);
        else
            v_name_string := v_name_string
                            || p_delimiter
                            || p_name_coll(idx);
        end if;
    end loop;
    return v_name_string;
end name_coll_type_to_varchar2;

 

if idx가 하한값(시작값) 518이면 518에 해당하는 상품명을 출력하라 이렇게 이해를 했고

else 그렇지 않을 경우에는 아예 어떻게 처리해야 하는지를 모르겠습니다.

by 마농 [2020.12.22 13:08:20]

루프 돌리면서 이름을 연결해 나가는데 구분자를 앞에 넣습니다.
맨 처음 이름은 구분자 안넣고, 두번째 부터 구분자 넣는 것입니다.
배열 입력 값이 ('가가가', '나나나', '다다다') 로 들어 오고 구분자가 컴마로 들어 온다면
1행 : '가가가'
2행 : '가가가' ||','|| '나나나' --> '가가가,나나나'
3행 : '가가가,나나나' ||','|| '다다다' --> '가가가,나나나,다다다'


by 반집의승리 [2020.12.22 13:55:09]

마농님 매번 감사합니다. 이해가 되네요!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입