본문 바로가기
기타 IT 지식/SQL

[ Oracle ] Oracle PL/SQL 화면출력 & 간단 예제

by 코뮤(commu) 2021. 5. 3.
728x90
반응형

 

PL/SQL 이란?

 

오라클에서 제공하는 프로그래밍언어로,

Procedural Language/SQL 의 약자이다.

 

일반 프로그래밍 언어적인 요소를 거의 다 가지고 있기 때문에

실무에서 요구되는 절차적인 데이터 처리를 다 할 수 있다.

 

특히 SQL과 연동되어서 막강한 기능을 구현할 수 있다.

 

 

데이터 트랜잭션 처리능력이나 정보보호, 데이터 대한 보안,

예외처리 기능, 객체지향 등 데이터베이스와 관련된 중요한 모든 기능을 지원하기 때문에

데이터베이스 업무를 처리하기에 최적화된 언어이다.

 

 

 

PL/SQL 기본 구조

 

 

선언부, 실행부, 예외처리부로 구성된다.

 

Anonymous PL/SQL Block과 Stored PL/SQL Block이 있다.

 

 

 

 

 

주의!

 

 

PL/SQL 은 기본적으로 처리된 PL/SQL 문장의 결과를 화면에 출력하지 않는다.

 

 

 

따라서

 

> SET SERVEROUTPUT ON;

 

을 입력해 화면 출력기능을 활성화시켜야한다.

 

 

 

 

 

 

예시 1: 1~10까지의 합 구하기

declare
    v_num int;
    v_sum int:=0;
    
begin
    v_num:=1;
    loop
        v_sum := v_sum+v_num;
        if v_num >= 10 then
            exit;
        end if;
        v_num := v_num+1;
       
    end loop;
    dbms_output.put_line(v_sum);
exception
    when others then
        dbms_output.put_line(sqlcode||sqlerrm);
end;
/
show serveroutput; 
set serveroutput on;

 

 

 

 

예시 2: 1~20까지의 자연수 가운데 3의 배수만 합계를 구하고

출력을 "TOTAL : " 로 합계를, "Last number : " 로 마지막 숫자를 출력하라

 

 

 

declare
    v_num int;
    v_sum int:=0;
    
begin
    v_num:=1;
    loop
        if mod(v_num,3)=0 then
            v_sum:=v_sum+v_num;
        end if;
        if v_num >= 20 then
            exit;
        else
            v_num := v_num+1;
        end if;
    end loop;
    dbms_output.put_line('TOTAL : '|| v_sum || ' Last number : ' || v_num);
exception
    when others then
        dbms_output.put_line(sqlcode||sqlerrm);
end;
/
show serveroutput; 
set serveroutput on;

 

 

 

 

예시 3: deptno로 dname을 출력하는 사용자정의 함수 작성하기

 

 

show serveroutput; 
set serveroutput on;
create or replace function get_dept_name(v_deptno dept.deptno%type)
return dept.dname%type
is
    v_dname dept.dname%type;
begin
    select dname
    into v_dname
    from dept
    where deptno=v_deptno;
    
    return v_dname;
exception
    when others then
        dbms_output.put_line(sqlcode || sqlerrm);
        return 0;
end;
/
select empno, ename, deptno, get_dept_name(deptno) from emp;

 

 

(참고로, 오라클에서 제공하는 기본 scott 스키마를 이용했습니다)

 

 

 

 

 

 

 

 

만든 함수 코드 확인하기

 

 

우리가 만든 함수는 하나의 객체로 들어가있습니다.

 

 

select object_name, object_type from user_objects;

 

 

 

맨 위에 type이 FUNCTION 인 객체를 확인할 수 있습니다.

 

 

 

select line, text from user_source
where name='GET_DEPT_NAME';

 

 

 

 

함수 호출하는 방법 3가지

 

1. select 문 안에서

2. 다른 모듈에서

3. sql*plus 명령

 

 

 

 

728x90
반응형