336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE ADJDK.TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    IN_SU NUMBER(3) NOT NULL := 1;
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    DBMS_OUTPUT.PUT_LINE(IN_SU);
    WHILE IN_SU <= V_SU LOOP    --WHILE문을 도는 조건입니다.
        DBMS_OUTPUT.PUT_LINE('현재 값은'||IN_SU||'입니다.');
        IN_SU := IN_SU + 1;     --IN_SU를 +1씩 해줍니다.
        EXIT WHEN IN_SU > V_SU; --해당 조건이면 while문을 탈출합니다.
    END LOOP;
   
    IN_SU := 1;
    LOOP
        DBMS_OUTPUT.PUT_LINE('현재값은 '||IN_SU||'입니다.(LOOP)');
        IN_SU := IN_SU + 1;     --IN_SU를 +1씩 해줍니다.
        EXIT WHEN IN_SU > V_SU; --해당 조건이면 while문을 탈출합니다.
    END LOOP;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

EXEC TEST10(3); --실행구문

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    --DMBS_OUTPUT.DISABLE;
   
    IF V_SU = 1 THEN DBMS_OUTPUT.PUT_LINE('입력수는 1입니다.');
    ELSE RAISE NOT_ONE_ERROR; --에러로 넘어갑니다.
    END IF;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

exec TEST10(2); --실행구

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

//테스트용 테이블생성

CREATE TABLE testTable(
    NUM NUMBER PRIMARY KEY,
    NAME VARCHAR2(30) NOT NULL
);

 

select * from testTable

 

INSERT INTO testTable VALUES(2, 'test2')

 

//밑에 있는 함수 호출

SELECT numadd() FROM DUAL

 

//함수 구문 (into를 이용해서 쿼리에 있는 것을 변수에 넣었습니다

CREATE OR REPLACE FUNCTION numAdd
RETURN NUMBER IS //NUMBER형식 리턴
MAXNUM testTable.NUM%TYPE; //testTable의 NUM칼럼 형식 변수
F_NUM NUMBER(4);                 //숫자4자리
F_NAME VARCHAR(30);            //문자 30(한글2, 영어1)
CURSOR C1                          //커서를 넣습니다. 넣는 기준은 밑에 쿼리이고, F_NUM, F_NAME형식입니다.
IS
    SELECT NUM, NAME INTO F_NUM, F_NAME FROM testTable;

BEGIN
    SELECT NULLIF(MAX(NUM)+1, 1) INTO MAXNUM FROM testTable;  //NULLIF( MYSQL 에서는 IFNULL입니다.)
    
    DBMS_OUTPUT.PUT_LINE(MAXNUM||'check'); //문자열
    OPEN C1; //CURSOR 사용준비
    LOOP  //돌립니다.
        FETCH C1 INTO F_NUM, F_NAME; //1개씩 가져옵니다 각각 F_NUM, F_NAME에 넣습니다.
        EXIT WHEN C1%NOTFOUND;  //나오는 조건은 C1을 찾을수 없으면 나옵니다.
        DBMS_OUTPUT.PUT_LINE(F_NUM || F_NAME||'dasdfasdf');
    END LOOP;  //루프문의 끝입니다.
    return MAXNUM;  //리턴
END numAdd;  //함수끝
/

 

---------------------------------------------------------------------- 

//해당 쪽에 문자열을 붙여주는 프로시저

CREATE OR REPLACE PROCEDURE testA

IS
BEGIN
    UPDATE testTable
    SET name = name || '2';

COMMIT;

END testA;
/

 

//프로시저 호출하기

EXECUTE testA();

 

----------------------------------------------------------------------

//dbms_output.put_line주석 보여주기

SET SERVEROUTPUT ON;

 

//간단한 block

begin
    dbms_output.put_line('확인');
end;
/

+ Recent posts