2020년 7월 18일 토요일

ORACLE Procedure, 오라클 프로시저(Procedure), 이론및 실습, 예제

오라클 프로시저(Procedure), 이론및 실습, 예제

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=563

2-2 프로시저(Procedure)

n 자신을 호출한 곳으로 리턴 해주는 값은 없고 호출되어 실행만 된다.

n 실행환경과 Stored Program 사이에 값을 전달하기 위해 파라미터를 사용한다.

n 파라미터 종류

IN : 호출하는 곳에서 함수 or 프로시저로 값을 전달

OUT : 함수 or 프로시저에서 호출한 곳으로 값을 전달

IN OUT : 호출하는 곳에서 함수 or 프로시저로 값을 전달하고 동시에 함수 or

프로시저에서 호출한 곳으로 값을 전달하는 변수.

n 프러시저 Header의 끝에는 IS[AS]가 와야하고 Is와 Begin사이에 Begin ~ End에서 사용할

변수를 선언한다.

n 자신의 스키마에서 프로시저를 만들기 위해서는 CREATE PROCEDURE 시스템권한이

있어야 하며 다른 스키마 계정에서 프로시저를 만들기 위해서는

CREATE ANY PROCEDURE 시스템 권한이 이 있어야 한다.

[형식]

CREATE [OR REPLACE] PROCEDURE procedure_name [parameters]

IS[/AS]

Declaration_section

BEGIN

Execution_section

EXCEPTION

exception section

END;

/

SQL> edit ojc3

CREATE OR REPLACE PROCEDURE ojc3

(p_empno IN NUMBER, p_new_sal IN NUMBER)

IS

BEGIN  

UPDATE emp

SET sal = p_new_sal

WHERE empno = p_empno;

COMMIT;

END ojc3 ;

/

SQL> @ojc3

프로시저가 생성되었습니다.

SQL> select empno, ename, sal from emp where empno = 7369;

EMPNO ENAME SAL

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

7369 SMITH 800

SQL> exec ojc3(7369, 4500)

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> select empno, ename, sal from emp where empno = 7369;

EMPNO ENAME SAL

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

7369 SMITH 4500

[Procedure에서 OUT 변수 사용 예제]

SQL> edit ojc4

CREATE OR REPLACE PROCEDURE ojc4(p_empno IN NUMBER, p_sal OUT NUMBER)

IS

BEGIN

SELECT sal INTO p_sal FROM emp

WHERE empno = p_empno;

END ojc4;

/

SQL> @ojc4

프로시저가 생성되었습니다.

SQL> variable sal number

SQL> exec ojc4(7369, :sal)

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> print sal

SAL

----------

4500

[LAB]

- 사원의 job을 입력받아 EMP 테이블에서 해당 job을 가진 직원의 급여(sal) 칼럼 값을

10% 증가 하는 프로시저를 작성하세요 .(SAL 값은 소수첫째 자리에서 반올림 하세요)

- 사원의 job을 입력받아 EMP 테이블에서 해당 job을 가진 직원이 몇명인지 그 수를 리턴하는

함수를 작성하세요. (소스코드 및 실행결과 제출)

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...