CREATE or REPLACE FUNCTION sum_emp //sum_emp 이름으로 함수 생성
(v_deptno IN emp.deptno%TYPE) //입력받는값 변수에 empTB에 deptno랑 같은 타입으로받겟다
//v_deptno 란 변수에 emp.deptno 와 같은 타입으로 선언
return number 변수를 넘버타입으로 리턴
IS v_sum_sal emp.sal;%TYPE; //변수와 데이타 타입
BEGIN
SELECT SUM(sal) //SUM(sal)은 살레코드의의 값을 다 더하겟다
INTO v_sum_sal
FROM emp
WHERE dept=v_deptno; //입력받은 부서번호와 일치한다면
RETURN (v_sum_sal); //리턴하라
END;
/
excute example)SELECT sum_emp(20) FROM dual;
CREATE or REPLACE PROCEDURE 이름
(v_deptno IN emp.deptno%TYPE,
v_sum_sal OUT emp.sal%TYPE) //IN:mode is IN in function, OUT:argument result is return
IS
BEGIN
SELECT SUM(sal)
INTO v_sum_sal //
FROM emp
WHERE deptno = v_deptno;//입력받은 값과 같은때 그걸 가주와서 섬에서 다 더하고 v_sum_sal 이란 변수에 너케따
END;
/
프로시져 실행
VARIABLE x number //프로시저를 실행시켜서 값이 나오면 저장시킬 변수를 일단 선언
execute 프로시져네임(10, :x)
//10번이 파라미터값으로 들어가고 x 에 v_sum_sal 에 결과값이 들어간다
PRINT x // v_sum_sal 의 값이 x 에 저장되 있으니 x 를 출력하라
IF 조건 THEN
문장;
ELSE
문장;]
END IF;
LOOP
문장1;
문장2;
···
EXIT[WHEN 조건]; --EXIT 문
END LOOP;
CREATE or REPLACE PROCEDURE loop_basic1
IS
v_num number(2) := 1;
v_sum varchar(10) := NULL;
BEGIN
LOOP
v_sum := v_sum||'*';
DBMS_OUTPUT.PUT_LINE(v_sum);
v_num := v_num+1;
EXIT WHEN v_num > 10;
END LOOP;
END loop_basic1;
/
FOR 인덱스 IN [REVERSE] 하한..상한 LOOP
문장1;
문장2;
···
END LOOP;
CREATE or REPLACE PROCEDURE for_basic1
IS
v_char varchar2(10) := NULL;
BEGIN
FOR I IN 1..10 LOOP
v_char := v_char||'*';
DBMS_OUTPUT.PUT_LINE(v_char);
END LOOP;
END for_basic1;
/
WHILE 조건 LOOP
문장1;
문장2;
···
END LOOP;
CREATE or REPLACE PROCEDURE while_basic1
IS
v_num number(2) := 1;
v_char varchar2(10) := NULL;
BEGIN
WHILE v_num <= 10 LOOP
v_char := v_char||'*';
DBMS_OUTPUT.PUT_LINE(v_char);
v_num := v_num+1;
END LOOP;
END while_basic1;
/