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을 가진 직원이 몇명인지 그 수를 리턴하는

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

오라클함수란, PL/SQL 오라클 함수(Function), 아론 맟 실습예제

PL/SQL 오라클 함수(Function), 아론 맟 실습예제

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

2. PL/SQL 프로그램

2-1. 함수(Function)

n 자신을 호출한 곳으로 반드시 하나의 값을 리턴해 줘야되는 PL/SQL Stored Program 이다.

n Stored Function or User Function or User-Defined Function 이라고 한다.

n 자신의 스키마 계정에 함수를 작성하려면 CREATE PROCEDURE 시스템 권한이 있어야하며

다른 사용자 계정에서 함수를 만들려면 CREATE ANY PROCEDURE 시스템 권한이 있어야

한다.

n 함수 Header에 리턴되는 데이터 타입을 기술해야 하고 Header의 끝에는 IS[AS]가

와야하고 Is[AS]와 Begin사이에 Begin~End에서 사용할 변수를 선언한다.

[형식]

CREATE [OR REPLACE] FUNCTION function_name [parameters]

RETURN 리턴되는 데이터타입

IS[/AS]

Declaration_section

BEGIN

Execution_section

Return return_variable;

EXCEPTION

exception section

Return return_variable;

END;

/

SQL> edit ojc2

CREATE OR REPLACE FUNCTION ojc2(p_empno IN NUMBER)

RETURN VARCHAR2

IS

v_ename emp.ename%TYPE;

BEGIN  

-- BEGIN~END 사이의 SELECT절은 반드시 한건만 SELECT 되야하며 INTO절이 반드시 필요

SELECT ename

INTO v_ename

FROM emp

WHERE empno = p_empno;

RETURN v_ename;

END ojc2;

/

SQL> @ojc2

함수가 생성되었습니다.

SQL> variable ename varchar2(50)

SQL> exec :ename := ojc2(7369)

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

SQL> print ename

ENAME

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

SMITH

SQL> select ojc2(7369) from dual;

OJC2(7369)

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

SMITH

SQL> drop table emp_temp;

SQL> create table emp_temp as select empno, sal, ename from emp where 1 = 2;

SQL> insert into emp_temp values (7788, 9999, ojc2(7788));

1 개의 행이 만들어졌습니다.

SQL> select * from emp_temp;

EMPNO SAL ENAME

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

7888 9999 SCOTT

(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...