프로시저(PROCEDURE)

이태규·2022년 3월 23일
0

SQL

목록 보기
18/26

프로시저

자주 사용하는 SQL을 프로시저로 만듬 -> 필요할 때 마다 호출 -> 반환되는 값은 없음
조회된 데이터는 가져갈 수 있음.

없으면 만들고 기존에 있으면 수정 (UPSERT임)

조건문 프로시저 만들기

CREATE OR REPLACE PROCEDURE  PROC_IF_EXAM(
    V_NUM IN NUMBER --외부에서 숫자하나가 전달되어야 함.
)
IS
    --변수정의
    V_GRADE VARCHAR2(2);
BEGIN
    IF(V_NUM >= 90) THEN
        V_GRADE := 'A';
    ELSIF (V_NUM >= 80) THEN
        V_GRADE := 'B';
    ELSE
        V_GRADE := 'F';
    END IF;
    DBMS_OUTPUT.PUT_LINE('등급 :' || V_GRADE);
END;
/

프로시저 사용하기


EXEC PROC_IF_EXAM(88);

반복문 사용하는 프로시저 만들기

CREATE OR REPLACE PROCEDURE  PROC_FOR_EXAM(
    V_NUM IN NUMBER --외부에서 숫자하나가 전달되어야 함.
)
IS
BEGIN
    FOR i IN 1..9 LOOP
        DBMS_OUTPUT.PUT_LINE(V_NUM || '*' || i || '=' || V_NUM * i);
    END LOOP;
END;
/
사용
EXEC PROC_FOR_EXAM(1);

INSERT하는 프로시저 만들기

CREATE OR REPLACE PROCEDURE  PROC_INSERT_EXAM(
    V_ID MEMBER2.USERID%TYPE,
    V_PW MEMBER2.USERPW%TYPE,
    V_NA MEMBER2.USERNAME%TYPE,
    V_AG MEMBER2.USERAGE%TYPE
)
IS
BEGIN
   INSERT INTO MEMBER2(USERID, USERPW, USERNAME, USERAGE, USERDATE, ORDNO)
   VALUES (V_ID, V_PW, V_NA, V_AG, CURRENT_DATE, 12);
   COMMIT;
   DBMS_OUTPUT.PUT_LINE('INSERT 성공');
EXCEPTION
    WHEN OTHERS THEN
    ROLLBACK;
    DBMS_OUTPUT.PUT_LINE('INSERT 실패');
END;
/
사용
EXEC PROC_INSERT_EXAM('ASD','QWE','CJN',123);
profile
한 걸음씩 나아가자

0개의 댓글