반응형
매게 변수 없는 프로시저
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 |