본문 바로가기

DB

Oracle(프로시저)

반응형

 

 

 

매게 변수 없는 프로시저

CREATE OR REPLACE PROCEDURE MEMBER
IS # 사용할 변수선언 
BEGIN #실행구간 PL/SQL ,EXCEPTION
 INSERT INTO TBL_MEMBER(MEMBER_NAME,MEMBER_PASSWORD)VALUES('TEST','1');
END MEMBER;

 

실행구문

EXECUTE MEMBER;

 

실행하게 되면 MEMBER_NAME 과 MEMBER_PASSWOR에 'TEST','1' 이 저장될것이다. 

 

매게 변수 있는 프로시저

CREATE OR REPLACE PROCEDURE MEMBER
   (MEMBER_NAME IN VARCHAR2,
    MEMBER_PASSWORD IN VARCHAR2,
    MEMBER_ROLE IN VARCHAR2,
    MEMBER_EMAIL IN VARCHAR2,
    MEMBER_ADDRES IN VARCHAR2,  
    MEMBER_AGE IN VARCHAR2)
IS 
BEGIN
 INSERT INTO TBL_MEMBER(MEMBER_NAME,MEMBER_PASSWORD,
 						MEMBER_ROLE,MEMBER_EMAIL,
                        MEMBER_ADDRES,MEMBER_AGE)
                        VALUES(MEMBER_NAME,MEMBER_PASSWORD,
                               MEMBER_ROLE,MEMBER_EMAIL,
                               MEMBER_ADDRES,MEMBER_AGE);
END MEMBER;

실제로 회원가입 하는 테이블을 예제로 해봤다 여기서 회원가입 되는 날짜는 안넣었다 테이블 생성시에 기본값으로 현재 날짜가 입력되도록

생성했기 떄문에 프로시저에서 굳이 해주지 않아도 데이터 입력이 가능하다. 

 

실행구문

EXECUTE MEMBER('member3','1','ROLE_USER','SDF@SDF.COM','1','12');

 

IF사용

CREATE OR REPLACE PROCEDURE MEMBER
   (P_MEMBER_NAME IN VARCHAR2,
    P_MEMBER_PASSWORD IN VARCHAR2,
    P_MEMBER_ROLE IN VARCHAR2,
    P_MEMBER_EMAIL IN VARCHAR2,
    P_MEMBER_ADDRES IN VARCHAR2,  
    P_MEMBER_AGE IN VARCHAR2)
IS 
    VN_CNT NUMBER:=0;
BEGIN

SELECT COUNT(*)
    INTO VN_CNT
    FROM TBL_MEMBER
    WHERE MEMBER_NAME = P_MEMBER_NAME;
    
IF VN_CNT = 0 THEN
 INSERT INTO TBL_MEMBER(MEMBER_NAME,MEMBER_PASSWORD,
                        MEMBER_ROLE,MEMBER_EMAIL,
                        MEMBER_ADDRES,MEMBER_AGE)
                            VALUES(P_MEMBER_NAME,P_MEMBER_PASSWORD,
                                   P_MEMBER_ROLE,P_MEMBER_EMAIL,
                                   P_MEMBER_ADDRES,P_MEMBER_AGE);
      END IF;
      COMMIT;
      
END MEMBER;

 

현재 디비에  member3 이 저장되어 있다 구문을 실행하면 데이터가 저장되지 않는것을 확인할수 있다.

member4로 입력해서 새로운 데이터를 넣어보자 

EXECUTE MEMBER('member4','1','ROLE_USER','SDF@SDF.COM','1','12');

프로시저를 사용하면 데이터베이스의 보안이 향상되고 프로시저 내에 IF, WHILE,DELETE 등을 삽입하여 사용할 수 있다

 

 

예를 들면 월레 INSERT 구문이 

 INSERT INTO TBL_MEMBER VALUES('member2','1','ROLE_USER','SDF@SDF.COM','DF','1999',SYSDATE);

이렇게 되는데 개발할때 이구문을 사용하는거보다 프로시저로 등록하면  빠르게 사용 가능하고 네트워크 트레픽을 크게 감소 시킨다.

다만 단점은 유지보수가 힘들다..

 

교육받을때도 프로시저가 가장 힘들었다 이해가 잘 안되서 주먹구구 식으로 해서 구현해서 이해를 잘 하지 못햇다 그래서 다시 찾아보고 포스팅을 해본다 아직 전문적으로 알지는 못하지만 실행부분 구간과 매게변수 , 변수 선언 이정도는 알고 있어야 나중에 다른걸 보더라도 이해 할수 있지 않을까? 라고 생각되서 포스팅 했당 

 

 

반응형

'DB' 카테고리의 다른 글

오라클 View  (0) 2020.12.21
Oracle(트리거생성,UPDATE,INSERT)  (0) 2020.12.10
Oracle(테이블 생성,제약조건,시퀀스)  (0) 2020.12.10
Oracle(Join ) 유형 및 구분  (0) 2020.12.01
Oracle (변환 함수)  (0) 2020.11.20