반응형

오라클 프로시저 파라미터 테이블에 사용

 

 

오라클 프로시저를 사용할 때 파라미터를 테이블에 사용하는 방법에 대해 알아보도록 하겠습니다.

 

 

그럼 일단 아래 예시 프로시저를 확인해볼까요!

 

 

CREATE OR REPLACE PROCEDURE PROC_TABLE_PARAM(p_TB_ID IN VARCHAR2, p_RET OUT VARCHAR2)
IS

/*----------------------------------------------------------------------------
    프로그램명: PROC_TABLE_PARAM 
    작성일 : 2020/08/25
    내  용 : 동적 테이블 파라메터를 이용하여 사용
------------------------------------------------------------------------------*/

    v_FILE_NM   VARCHAR2(100);
    v_ERR_MESG  VARCHAR2(4000);        
    v_RET       VARCHAR2(1000);
    v_SQL       VARCHAR2(1000);
    
BEGIN
    
    BEGIN

        BEGIN

              v_SQL := 'SELECT SUBSTR(FILE_ID, 1, INSTR(FILE_ID , '''||'.'||''',1)-1) AS FILE_ID FROM '|| p_TB_ID ||' WHERE ROWNUM = 1' ;
              EXECUTE IMMEDIATE v_SQL INTO v_FILE_NM ;

        END;

        BEGIN
          
                SELECT REGEXP_REPLACE ( TO_CHAR(WM_CONCAT(ERROR_MSG)), ',', ' | ') AS MSG
                  INTO v_ERR_MESG
                  FROM TEST_A T1
                ;
                
                
        END;
            
        BEGIN
           
            UPDATE TEST_B
            SET    ERR_CODE = p_ERR_TYPE
                 , ERR_MESG = v_ERR_MESG
            WHERE  FILE_ID = v_FILE_NM
            ;      
         END;  
         
         
         COMMIT;
            
    END;

    p_RET := 'OK';
        
EXCEPTION                                                                                          

    WHEN OTHERS THEN
        ROLLBACK;
        p_RET := 'ERROR';
  
END;



 

 

 

여기서 중요하게 봐야 할 부분만 딱 집어보겠습니다.

 

 

#1. 테이블명 파라메터 받기

CREATE OR REPLACE PROCEDURE PROC_TABLE_PARAM(p_TB_ID IN VARCHAR2, p_RET OUT VARCHAR2)

 

p_TB_ID IN VARCHAR2 는 파라메터를 외부에서 받을 수 있습니다.

 

 

테이블명을 외부 프로그램에서 받아오면 프로시져에서 사용할 수 있겠네요

 

 

#2. 테이블명 FROM 절에서 사용하기

v_SQL := 'SELECT SUBSTR(FILE_ID, 1, INSTR(FILE_ID , '''||'.'||''',1)-1) AS FILE_ID FROM '|| p_TB_ID ||' WHERE ROWNUM = 1' ; 
EXECUTE IMMEDIATE v_SQL INTO v_FILE_NM ;

 

 

SQL 문장을 변수에 담아서 문장을 만듭니다.

 

문장을 만들 땐 FROM 절에서 파라메터로 받아온 테이블을 파이프(||) 로 연결하여 사용하였습니다.

 

그리고 EXECUTE IMMEDIATE 처리 하여 SQL 을 실행하도록 처리하였습니다.

 

 

 

간단하게 다이나믹 SQL 을 사용할 수 있었습니다.

 

 

잘 안되거나 궁금한것이 있으면 댓글로 같이 연구해보겠습니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

가평 에어비앤비

 

 

친구 가족들과 함께 여행가기로 마음 먹은 후 장소를 고르다가

 

 

인천/부천 코로나 확진자가 급증을 하면서

 

 

잠시 위험지역을 벗어나서 펜션에서 짱박혀있을 곳을 찾아다녔습니다.

 

 

강화도에 숨어있을까 했지만 강화도는 강화대교와 초지대교에서 섬으로 들어가는 사람들을

 

 

전부 발열체크를 하기 때문에 주말에는 초지대교에서만 1시간을 기다려야 할 것 같은 느김이 들었습니다.

 

 

그럴바에는 강촌, 가평, 포천, 양평 등으로 눈을 돌려서 가는것이 더 빠르겠다는 판단이 들었습니다.

 

 

이번에 구한 숙소는 에어비앤비로 구하기로 마음먹었습니다.

 

 

경기도 가평군 상면 임초리에 있는 독채로 된 주택인데

 

 

사진상으로 너무 마음에 들었지요~

 

 

일단 방 3개에 화장실 2개

 

 

그리고 마음껏 뛰놀수 있는 잔디밭이 준비되어있었습니다

 

 

#전경

 

 

 

 

이렇게 1,2층으로 되어 있지만

 

 

실제로 사용할 수 있는 것은 2층입니다.

 

 

1층은 주인분이 창고로 활용하고 있어서 사용할 수 없어요

 

 

1층 공간인데 별거 없죠?

 

 

호스트분께서 작업실 용도로 사용하고 있는 것 같습니다.

 

 

#거실

 

 

여기는 거실의 반쪽입니다.

 

 

써큘레이터가 2대와 에어컨이 있어서 여름나기에는 딱 좋습니다.

 

 

이번주는 날씨가 매우 더운 날이어서 그런지

 

 

집안에 들어왔을 때 아주 더워서 파워냉방을 했어요

 

 

 

층고가 매우 높아 개방감이 탁 트여있는 집이에요

 

 

덕분에 에어컨 바람이 골고루 퍼지는데 시간이 좀 걸렸지만

 

 

에어컨 + 써큘레이터 덕분에 그나마 금방 시원해진것 같아요^^

 

 

안마의자는 생각치 못했는데 모든 사람들이 안마의자를 최애템으로 꼽았어요

 

 

다들 집에가서 안마의자 꼭 사야지 다짐을 하고 갔던 시간이었어요 ㅎㅎㅎ

 

 

 

 

 

 

 

 

거실에는 큰 티비와 함께 노래방 기기 + 짱짱해보이는 스피커가 놓여져있습니다.

 

 

노래방을 꼭 해봐야지 했는데 놀다보니 피곤해서 켜보지도 못했네요ㅠㅠ

 

 

( 심지어 티비조차 아침에 잠깐 켜봤네요 ㅎㅎ )

 

 

아마 제대로 놀았다면 가평클럽펜션이라고 해도 믿을뻔했지 뭐에요 ㅎㅎㅎ

 

 

호스트분이 아프리카에서 이것저것 수집해온 물건들이 있는데

 

 

정말 아프리카틱한 느낌을 받을 수 있는 소품들이 많이 있었어요

 

 

 

 

 

긴 복도에는 문이 여러개가 있는데 어떤 공간들이 있을까요

 

 

 

#준비된물건

 

 

안방화장실과 공용화장실이 있습니다.

 

 

각 화장실에는 비데가 준비되어 있고

 

 

안방화장실에는 샤워부스가, 공용화장실에는 욕조가 준비되어 있습니다.

 

 

스파를 해볼 수 있는 상황은 아니었지만 아마 작동되지 않을까요?

 

 

 

이렇게 넉넉하게 수건도 준비되어 있으니

 

 

여유롭게 사용할 수 있었어요.

 

 

 

 

 

호텔에 가면 어메니티라고 할 수도 있는 샴푸, 바디샤워, 컨디셔너 등등이 준비되어 있습니다.

 

 

키즈치약까지...ㅎㅎㅎ

 

 

#방구경

 

 

방1
방2
방3

 

 

 

 

방이 총 3개가 준비되어 있는데

 

 

침대, 라꾸라꾸, 온돌방 이렇게 구성되어 있어요

 

 

방3이라고 되어 있는 부분은 주인분이 사용하고 있는 책상이 준비되어 있어서

 

 

조금 좁을 수 있으니 참고하시면 될 것 같습니다.

 

 

나머지 두개 방은 꽤 넉넉하게 사용할 수 있었어요

 

 

지금와서 보니 주방이 굉장히 길게 구성되어 있었는데 주방사진이 없네요ㅠ

 

 

주방에 있을만한 것들은 다 있어요

 

 

에어비앤비 특성상 호스트가 거주하던 집을 공유하는 것이기 때문에

 

 

여러 조미료들이 준비되어 있어서 좋았어요

 

 

#야외바베큐

 

 

야외로 나오면 바베큐를 해먹을 수 있는 공간이 있습니다.

 

 

바베큐통과 식탁, 그리고 수돗가까지 준비되어 있습니다.

 

 

날이 더운 여름에는 해가 지기 시작하면 벌레들이 꼬일 수 있어

 

 

해가 지기전에 바베큐를 다 해먹는게 좋은 것 같아요

 

 

빠르게 바베큐를 해먹고 나머지는 방에 들어와서 해결~

 

 

참고로 비가 오면 2층에서도 바베큐를 해먹을 수 있는 공간이 마련되어 있습니다.

 

 

#불멍

 

 

밤이 되면 밖에서 장작불 피워서 불멍하기 좋은 공간도 마련되어 있답니다.

 

 

애기들과 함께 한 여행이어서 벌레에 물릴 염려때문에 시도해보진 못했어요ㅠ

 

 

#마당

 

 

마지막으로 코로나를 피해 가장 좋았던 공간인 넓은 잔디 마당입니다.

 

 

주변에 사람들이 없기 때문에 마스크를 벗고 시원한 공기를 마음껏 마실 수 있는 시간이었어요

 

 

 

파릇파릇한 잔디와 함께 가지고 간 공과 배드민턴채로 땀흘리면서 열심히 놀았답니다^^

 

 

가평풀파티를 하는게 꼭 클럽을 가는게 아니라 진짜 풀(잔디)에서 파티를 할 수 있었던 시간들이었습니다.

 

 

전체적으로 아주 만족하면서 즐겼던 곳인 만큼 많은 추억을 쌓고 갑니다

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

ORACLE INSTR

 

 

ORACLE INSTR 함수는 간단한 함수이지만 자주 사용하는 함수가 아니어서

 

 

사용방법을 자주 찾아보는 함수이기도 해서 정리해두려고 합니다.

 

 

 

오라클 Database SQL Reference 사이트에서 INSTR 을 검색해보면 위와 같이 사용할 수 있는 방법을 제시합니다.

 

 

INSTR 은 INSTRB, INSTRC, INSTR2, INSTR4 함수와 동일한 방법으로 사용할 수 있다고 되어 있는데

 

 

사실 다른 것은 제쳐두고 INSTR 하나만 제대로 알아도 사용하는데 무리가 없습니다.

 

 

INSTR 주요 사용처

 

1. 문자타입의 데이터에서 특정 문자열의 위치 찾기

2. 특정 문자열부터 원하는 문자열까지 문자열 자르기 ( SUBSTR 활용 )

 

 

이 두가지를 주요 사용처로 씁니다.

 

 

INSTR 문법 사용

 

INSTR ( 문자열, 검색할 문자, 시작지점, n번째 검색단어 )

 

 

INSTR 사용 방법

 

 

SELECT INSTR('https://docs.oracle.com/', '/', 1, 1) AS TEST1
     , INSTR('https://docs.oracle.com/', '/', 1, 2) AS TEST2 
     , INSTR('https://docs.oracle.com/', '/', 1, 3) AS TEST3
     , INSTR('https://docs.oracle.com/', '/', 1, 4) AS TEST4
  FROM DUAL;

 

 

위 예시를 확인해 보면 'https://docs.oracle.com/' 문자에서 "/" 문자를 찾는 예시입니다.

 

문자열에서 / 가 총 3번이 들어가 있는데

 

4번째 parameter 를 활용하여 / 를 몇번째에 발견했는지를 찾아내는 parameter 입니다.

 

처음 발견했을 때는 7번째

두번째 발견했을 때는 8번째

세번째 발견했을 때는 24번째

네번째는 문자가 없으니 0 을 return 한 것을 알 수 있습니다.

 

 

한단계 더 활용을 하면 아래와 같이 할 수 있겠죠

 

 

SELECT SUBSTR('https://docs.oracle.com/'
            , INSTR('https://docs.oracle.com/', '/', 1, 2)+1
            , LENGTH('https://docs.oracle.com/')-1 - INSTR('https://docs.oracle.com/', '/', 1, 2)
            ) AS TEST5
  FROM DUAL;

도메인명을 알고 싶을 때 이렇게 / 의 자릿수를 찾아서 활용하듯

 

 

원하는 문자를 가공하여 사용하는데 많은 도움을 주는 함수가 INSTR 함수입니다.

 

 

작업을 하시다가 더 궁금한 점이 있으면 댓글로 같이 방법을 찾아봐요^^

 

 

 

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형