Q & A

Re: 바인드 변수

Date2019.05.30 / Hit : 13900
안녕하세요. 웨어밸리 오렌지팀 입니다.
Orange for Oracle에서의 바인드 변수 사용은 다음과 같습니다.

말씀하신 것처럼,
SELECT * FROM 테이블 WHERE 연도 = :연도
의 경우, :연도 / 2019 로 값을 입력하시면 됩니다.

IN ( aaa, bbb ) 또는 WHERE 사람이름 IN ( 홍길동 , 강감찬)
의 경우, 각각 개별 값을 가지는 값이므로,
:a / aaa
:b / bbb
:c / 홍길동
:d / 강감찬

으로 입력하셔야 합니다.

다만, 오라클의 경우 OCI를 통한 지원으로
변수명에 대해 지명이 가능하고 동일한 변수명의 경우, 동일한 값으로 할당을 할수 있습니다.

따라서,
SELECT * FROM 테이블A WHERE 연도 = :연도
SELECT * FROM 테이블B WHERE 연도 = :연도

와 같이 동일 변수명을 사용하시면,
변수 값에 :연도 / 2019 로 하나만 입력하시면 됩니다.

이는 오렌지에서 지원하는 다른 DB와의 차이점으로,
다른 DB의 경우 변수명을 지원하지 않기 때문에,
동일 값을 갖더라도 두번 입력해야 하는 번거로움을 갖습니다만,
Oracle의 경우 위와같이 SQL 구문에 동일 변수 사용시,
해당 변수명에 해당하는 값으로 입력됩니다.


보내주신 문장의 경우 연도는 같은 동일변수(:a)로, Beetween에 들어가는 일자값도 각각의 동일변수로 (:b, :c) 설정하시면 될 것으로 보입니다.
SELECT * FROM 테이블 WHERE 연도 = :a AND 기호 = 733B AND SINGLE_YN IN (Y, N) AND 일자 BETWEEN :b AND :c AND QTY > 1 UNION ALL
SELECT * FROM 테이블 WHERE 연도 = :a AND 기호 = 501B AND SINGLE_YN IN (Y, N) AND 일자 BETWEEN :b AND :c AND QTY > 1 UNION ALL
SELECT * FROM 테이블 WHERE 연도 = :a AND 기호 = 532B AND SINGLE_YN IN (Y, N) AND 일자 BETWEEN :b AND :c AND QTY > 1

감사합니다.
  • 대표전화
    1660-1675

  • 기술 문의
    02-6931-1734

  • 오렌지 문의
    070-8666-8175

  • 라이선스 문의
    02-6931-1728