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

2021. 5. 3. 17:04·Archive/Develop
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
반응형

'Archive > Develop' 카테고리의 다른 글

[ Oracle ] 프로시저와 sql*plus 예제 (프로시저 호출하는 방법)  (0) 2021.05.10
[ C++ ] 함수 중복(Function Overloading)  (0) 2021.05.04
[ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가  (0) 2021.04.24
[ GitHub ] Build Docker Image with Private Repo  (0) 2021.04.24
[ LeetCode ] 49번 Group Anagrams  (0) 2021.04.19
'Archive/Develop' 카테고리의 다른 글
  • [ Oracle ] 프로시저와 sql*plus 예제 (프로시저 호출하는 방법)
  • [ C++ ] 함수 중복(Function Overloading)
  • [ Django ]ORM ( Object-Relational Mapping ) 이란 무엇인가
  • [ GitHub ] Build Docker Image with Private Repo
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    보안뉴스
    코드업 기초
    장고
    자바스크립트 객체
    카카오 100일 프로젝트
    파이썬 기초
    코드업
    오라클
    docker
    비박스
    백준
    파이썬 문제
    Django
    파이썬 알고리즘
    Oracle
    oracle db
    파이썬
    백준 파이썬
    백준 문제풀이
    자바스크립트 API
    코드업 파이썬 기초 100제
    Git
    C++
    백준 풀이
    javascript
    Codeup
    파이썬 기초 문제
    파이썬 백준
    Python
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Oracle ] Oracle PL/SQL 화면출력 & 간단 예제
상단으로

티스토리툴바