DB 프로시저 관련 질문있습니다. 0 5 1,268

by 앙버터 [PL/SQL] 프로시저 프로시져 [2018.08.16 11:34:42]


예를 들어 어떤 화면의 콤보박스에서 값을 선택합니다. (A, B, C)

프로시저에서 받아 온 후,

이 가져온 값이 A 일때는 A = 'Y' 인 데이터,

B 일땐 B = 'Y' 인 데이터,

마찬가지로 C 일땐 C = 'Y' 인 데이터를 출력하고 싶은데요,

어떻게 구분해서 WHERE 절에 추가하면 될까요?

by chrome [2018.08.16 11:57:46]

CASE나 DECODE를 알아보세요. 

 


by 우리집아찌 [2018.08.16 12:00:34]
1
2
3
4
5
SELECT * FROM T
 WHERE CASE WHEN 파라미터 = 'A' THEN A
            WHEN 파라미터 = 'B' THEN B
            WHEN 파라미터 = 'C' THEN C
        END = 'Y'

 


by 앙버터 [2018.08.16 13:08:21]
1
2
3
4
5
6
7
8
9
SELECT *
 
  FROM T
 
 WHERE CASE WHEN 파라미터 = 'A' THEN 컬럼명 = 'Y'
 
            WHEN 파라미터 = 'B' THEN 컬럼명 = 'Y'
 
            WHEN 파라미터 = 'C' THEN 컬럼명 = 'Y'

알려주신 방법을 고민해보긴 했는데, THEN 이후의 컬럼명을 쓰는 부분이 문제가 있어서

어떻게 해야 할 지 모르겠습니다 ㅠㅠ


by 우리집아찌 [2018.08.16 13:22:13]

올려드린대로 해보세요. 

변형하지 마시구요.

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 예제   '&VAL' => 변수
 
WITH T ( A , B , C  ) AS (
SELECT 'Y' , ''  , '' FROM DUAL UNION ALL
SELECT ''  , 'Y' , ''  FROM DUAL UNION ALL
SELECT ''  , ''  , 'Y' FROM DUAL
)
 
SELECT * FROM T
 WHERE CASE WHEN '&VAL' = 'A' THEN A
            WHEN '&VAL' = 'B' THEN B
            WHEN '&VAL' = 'C' THEN C
        END = 'Y'

 


by 앙버터 [2018.08.16 13:30:34]

오 감사합니다, 이해했습니다. ㅠㅠㅠ 감사합니다

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