pl/sql arguments 관련질문 드립니다 0 2 2,085

by 이묵 [PL/SQL] [2014.07.01 14:33:55]


예전부터 항상궁금해하다가 아무리검색해도 원하는대답을 못얻어 그냥넘기곤했는데

이번에 제대로짚고 넘어가려고합니다.

SELECT &as_query_type                   QUERY_TYPE,
         A.DEPTCODE                       DEPTCODE  ,
         A.LIST_TYPE                      LIST_TYPE ,
         TO_DATE(A.IPDATE,'YYYYMMDD')     IPDATE    ,
         TO_DATE(A.IPDATE,'YYYYMMDD')     ORDDATE   ,
         A.PATNO                          PATNO     ,
         A.PATNAME                        PATNAME   ,
         A.SEXS                           SEXS      ,
         A.AGE                            AGE       ,
         A.DEPTENAME                      DEPTENAME ,
         A.JWFLAG                         JWFLAG    ,
         A.STATUS                         STATUS    ,
         TO_DATE(A.TWDATE,'YYYYMMDD')     TWDATE    ,
         A.DOCNAME                        DOCNAME    ,
         A.PATRCNO                        PATRCNO   ,
         &ad_s_date                       S_DATE    ,
         A.OPUNQKEY                       OPUNQKEY
    FROM V_CI_PATIENT_LIST A
   WHERE A.IPDATE       BETWEEN TO_CHAR(&ad_f_date,'YYYYMMDD') AND TO_CHAR(&ad_t_date,'YYYYMMDD')
     AND A.JWFLAG       LIKE &as_jwflag
     AND A.DEPTCODE     LIKE &as_deptcode
     AND A.STATUS       LIKE &as_status
     AND A.LIST_TYPE    = &as_list_type
     AND &as_list_type  NOT IN ('CQIICUID1','CQIANTIQU')
     AND &as_query_type = 'D'

이 쿼리를 pl/sql 에서 실행(F8)시키면 인자로설정된 값들을 입력하는 창이뜨는데

문자형은 '123' 숫자형은 123 이런식으로 값을넣어주는데 date값은 어떻게 넣어주나요?

'2014/07/01 00:00:00' , 2014/07/01 00:00:00 이런식으로 넣어도 수치가 부적접하다는 에러메세지만 return됩니다

날짜형식은 어떤식으로 값을 입력해줘야하나요?

 

by 마농 [2014.07.01 15:43:43]

엠퍼센트(&) 는 SQL의 문자열을 치환하는 기능만을 합니다.

그래서 위에서도 문자를 표현하기 위해 따옴표를 별도로 붙인거지요.

마찬가지로 날짜를 표현하려면 to_date 함수를 함께 써주면 되겠지요.

 

그러나 이런게 의도한바는 아닐듯 하네요?

타입을 가진 형태로 하려면 바인드변수를 써야 합니다.

바인드 변수는 보통 콜론(:)을 붙여 사용합니다.

 

마지막으로 사용하시는 용어가 부적절하네요.

PL/SQL 은 언어입니다. 말씀하시는 것은 언어가 아닌 개발툴인듯 하네요.

PL/SQL이 아니라 PL/SQL Developer 를 말하는게 아닐런지???


by 이묵 [2014.07.01 18:32:59]

pl/sql 개발툴에서요 ㅎㅎ

인자값을 date타입으로 입력해서 출력할순없군요...

쿼리를수정해서 테스트해봐야겠습니다

답변감사합니다~!

========================

15/02/03

우연히 다시 글을 보게됬는데...

답글을 이해하지못하고 안된다고 생각했었네요

말씀해주신대로 TO_DATE를 함께써주니 잘 되네요 감사합니다

&ad_f_date = TO_DATE('20141201')

 

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