프로시저
자주 사용하는 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);
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);