레이블이 PLSQL개요인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PLSQL개요인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 24일 금요일

오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare, 자바학원, 오라클학원, 오라클동영상, JAVA학원, ORACLE학원

 




오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare

오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare오라클 PL/SQLPL/SQL 이란?작성방법, 기본문법, 예제강의 : 이종철PL/SQL 이란?PL/SQL은 PROCEDUAL LANGUAGE/SQL의 약어로 “SQL 구문을 절차적인 형태로 프로그래밍 할 수 있게 한 SQL의 확장” 입니다.PL/SQL은 BEGIN~END 사이에 PL…

ojc.asia











오라클 PL/SLQ이란? PLSQL개요, 작성방법, 기본문법, declare




오라클 PL/SQL



PL/SQL 이란?

작성방법, 기본문법, 예제



강의 : 이종철





PL/SQL 이란?



  • PL/SQL은 PROCEDUAL LANGUAGE/SQL의 약어로 “SQL 구문을 절차적인 형태로 프로그래밍 할 수 있게 한 SQL의 확장” 입니다.
  • PL/SQL은 BEGIN~END 사이에 PL/SQL 코드를 기술하여 비지니스 로직 처리를 하는데 DML문, 절차적 언어의 IF문과 같은 제어문, 반복문(LOOP~END LOOP) 등을 사용하여 SQL을 이용하여 프로그래밍이 가능하도록 한 것입니다.
  • PL/SQL은 DECLARE로 선언되는 익명 블록과, 값을 반드시 리턴하는 함수(FUNCTION), 실행만 하는 프로시저(PROCEDURE), 트리거링 이벤트에 의해 자동 실행되는 프로시저인 트리거(Trigger), 비슷한 기능을 하는 함수, 프로시저를 묶어 놓은 패키지 등이 있습니다.
  • 익명 블럭은 오라클 서버에서 컴파일되어 SGA의 SHARED POOL에 위치시키지만 소스코드와 컴파일된 코드를 별도로 저장하지는 않습니다.
  • 함수나 프로시저, 패키지, 트리거는 STORED PROGRAM 이라 하며 데이터베이스 SCHEMA OBJECTS로 저장되고 호출되어 실행된다.
  • PL/SQL로 작성된 구문중 절차적 언어와 같은 구문, PL/SQL 기본문법구문은 PROCEDUAL STATEMENT EXECUTOR에서 실행하고 SQL구문은 SQL STATEMENT EXECUTOR에서 실행 합니다.
  • PL/SQL 프로그램은 오라클 서버에서 컴파일 되고 저장되며, 클라이언트에 의해 호출되어 실행 됩니다





PL/SQL 장점


  • BEGIN~END와 같은 블록 구조를 가지므로 블록 안의 여러 SQL 구문이 한번에 서버로 전송되므로 수행속도가 향상되고 통신량도 줄일 수 있습니다.
  • 블록안에 또 다른 블록을 포함하는 형태로 코드를 모듈화 할 수 있습니다.
  • 단일형 데이터 타입(SCALAR DATA TYPE), 복합데이터 타입(COMPOSITE DATA TYPE), 상수 등 여러 형태의 변수 선언이 가능하다.
  • 테이블의 컬럼을 참조하는 동적 변수를 정의 할 수 있습니다.(%TYPE, %ROWTYPE)
  • IF문과 같은 조건문을 사용할 수 있습니다.
  • LOOP~END LOOP, FOR..LOOP~END LOOP, WHILE .. LOOP~END LOOP와 같은 반복문을 사용할 수 있습니다.
  • Exception절을 이용하여 프로그래밍 언어처럼 예외(오류)를 처리 할 수 있으며 사용자 정의 예외의 사용도 가능 합니다.


 

PL/SQL 작성방법


  • 명령문의 종료는 세미콜론(;) 입니다.
  • CREATE 구문을 사용했다면 실행을 위해 마지막에 슬래시(‘/’)가 필요 합니다.
  • 익명의 블록을 만들기 위해서는 DECLARE 구문으로, 이름있는 블록을 만들기 위해서는 CREATE 구문을 사용해야 합니다.
  • 하나의 BEGIN에 대응되는 END 구문은 하나이며 세미콜론(;)으로 끝나야 하고, END 다음에 CREATE 구문에서 사용된 함수나 프로시저의 이름을 써줘도 된다.
create procedure A as

begin

end A;
/
  • Declare로 선언된 익명블록인 경우 컴파일시 에러가 발생하면 에러 코드/메시지를 하단에 보여주지만 CREATE로 시작하는 함수나 프로시저는 오류 발생시 SHOW ERRORS(ERROR)로 확인해야 한다.


SQL> SHOW ERRORS

LINE/COL              ERROR

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

10/13           PL/SQL: SQL Statement ignored

11/10           PLS-00201: ‘EMP.SAL' …..




PL/SQL 블록 구조


DECLARE 
     Variable declaration
BEGIN 
     Program Execution 
……
EXCEPTION 
     Exception handling
  ……
END;

[PL/SQL 블록 구조]


  • Declare절 : 선언부로써 필수는 아님, 변수 or 커서 등을 선언한다. 이름을 정의하고 재 사용할 PL/SQL 블록을 만들기 위해서는 CREATE구문을 사용해야 합니다.


- 변수선언예 

goodsNo  NUMBER(4);

isLogin    BOOLEAN;

ename    VARCHAR2(20);


    - 커서 선언 예

        Declare

           Cursor cEmp is select empno, ename from emp where deptno = 10;

Begin

……  

End;

/


  • Begin ~ End절 : 필수 요소이며 절차적 언어의 특징 및 SQL을 사용하여 비즈니스 로직을 구현 합니다.
  • Exception절 : 예외처리절(프로그래밍 언어의 CATCH구문) 입니다.


[PL/SQL 예문1]

-- FOR LOOP예제

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

    BEGIN

      FOR x IN 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

1

10


-- FOR LOOP예제(REVERSE)

SQL> DECLARE

    BEGIN

      FOR x IN REVERSE 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

10

9



#PL/SLQ이란, #PLSQL, #PLSQL개요, #PLSQL작성방법, #PLSQL기본문범, #오라클, #오라클교육, #오라클학원, #오라클동영상, #ORACLE교육, #ORACLE학원, #ORACLE동영상, PL/SLQ이란, PLSQL, PLSQL개요, PLSQL작성방법, PLSQL기본문범, 오라클, 오라클교육, 오라클학원, 오라클동영상, ORACLE교육, ORACLE학원, ORACLE동영상, 
 

2020년 7월 19일 일요일

오라클, SQL, 스칼라서브쿼리, Scalar SubQuery

오라클, SQL, 스칼라서브쿼리, Scalar SubQuery

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

5.4 Scalar SubQuery

하나의 단일값을 나타내기 위해 SELECT구문을 SELECT LIST, WHERE절, ORDER BY절, DML등에 사용하는 서브쿼리를 지칭하며 데이터건수가 적을 경우 조인 방식보다 유리하다. 유효한 수식이 사용될 수 있는 곳이라면 어디든 사용가능하며 반드시 하나의 결과만 되돌려야 한다.

--사원테이블과 부서테이블을 조인하여 사번, 사원명, 부서코드, 부서명을 추출한다고 하자.

SQL> select empno, ename, emp.deptno, dname from emp, dept

2 where emp.deptno = dept.deptno;

EMPNO ENAME DEPTNO DNAME

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

7782 CLARK 10 ACCOUNTING

……

7654 MARTIN 30 SALES

14 개의 행이 선택되었습니다.

-- 스칼라 서브쿼리로 바꾸면

SQL> select empno, ename, deptno, (select dname from dept where emp.deptno = dept.deptno)

2 from emp;

EMPNO ENAME DEPTNO (SELECTDNAMEFR

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

7369 SMITH 20 RESEARCH

……

7934 MILLER 10 ACCOUNTING

14 개의 행이 선택되었습니다.

-- 부서별로 사원수를 출력하는 쿼리를 스칼라 서브쿼리를 이용해 보자.

SQL> select deptno, dname,

2 (select nvl(count(*),0) from emp where emp.deptno = dept.deptno) emp_cnt

3 from dept ;

DEPTNO DNAME EMP_CNT

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

10 ACCOUNTING 3

20 RESEARCH 5

30 SALES 6

40 OPERATIONS 0

-- insert 구문에 스칼라 서브쿼리를 사용해보자.

SQL> create table emp_summary (

2 sum_sal number,

3 avg_sal number,

4 max_sal number,

5 min_sal number

6 );

테이블이 생성되었습니다.

SQL> insert into emp_summary (

2 sum_sal,

3 avg_sal,

4 max_sal,

5 min_sal )

6 values (

7 (select sum(sal) from emp),

8 (select avg(sal) from emp),

9 (select max(sal) from emp),

10 (select min(sal) from emp)

11 );

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

SQL> commit;

-- 아래처럼 order by절에서도 사용 가능하다. EMP테이블에서 부서이름으로 정렬

SQL> select empno, ename, sal

2 from emp e

3 order by ( select dname from dept d

4 where e.deptno = d.deptno);

EMPNO ENAME SAL

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

7782 CLARK 2450

7839 KING 5000

7934 MILLER 1300

7566 JONES 2975

……

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