'전체'에 해당되는 글 177건

  1. 2011.12.25 볼만한 영화
  2. 2011.07.19 여름휴가장소 추천
  3. 2011.02.25 고급 Bash 스크립팅 가이드
  4. 2011.02.25 Shell 전달날짜 구하기
  5. 2011.02.06 동물이 주인공인 영화
  6. 2010.12.16 grep 제외문자열 -v -Ev
  7. 2010.09.01 (unix)shell script 어제 날짜 구하기
  8. 2010.09.01 (unix)shell script CASE문 예제
  9. 2010.09.01 (unix)shell script 예제
  10. 2010.09.01 (oracle)오라클 PL/SQL은 무엇인가?
2011.12.25 13:17

볼만한 영화

리얼스틸
도가니
완득이
다크아웃
범죄와의전쟁
Trackback 0 Comment 0
2011.07.19 16:56

여름휴가장소 추천


요즘 아이들 방학이다... 여름휴가다... 해서 장소 선정에 고민들 많으실겁니다... 

그래서 제가 여름휴가 또는 주말여행으로 가볼만한 곳을 추천해 드리겠습니다...

충청북도 괴산군 하면

속리산 자락에 위치하고 있어 물 좋고, 공기좋은 곳이 많습니다...

요즘 날씨가 더워서 저희 가족도 주말마다 물놀이 할 곳을 물색하느라 정신없습니다...

제가 사는 곳에서 한시간정도 가면 괴산군이기에 주로 가는 곳을 안내해 드리고자 합니다..

 

첫번째코스,

산막이 옛길....

최근 여행가본 곳 중 최고였습니다...

괴산군 괴산땜 주변으로 길을 만들었는데요... 환경훼손을 최소화하여 만든 길이기에 정말 멋있습니다...

길도 그리 험하지 않아 가족여행, 데이트코스로 그만입니다...

길을따라 가다보면 좌측으로 괴산땜이 우측으론 험난한 산세가 있습니다...

사진찍으시는 분들도 적극 추천합니다.

정말 훌륭한 작품이 나올만한 곳이 많이 있거든여~~

관련 정보는 http://sanmaki.goesan.go.kr/

 

두번째코스,

괴산에는 계곡이 특히 많은데요...

그중에서 가본곳이 쌍곡계곡, 사담계곡, 갈은계곡 입니다...

모두다 가볼만한 곳이지만 특히 갈은계곡을 추천해 드립니다...

괴산땜 근처에 있어서 산막이 옛길은 오전에 그리고... 오후에는 갈은계곡에 가셔서 더운땀을 식히기에 제맛입니다...

그리고 요즘은 비가 온 뒤라 물이 많아 물놀이로 일품일 겁니다...

관련 정보는 http://www.goesan.go.kr/content/index.php?idx=6&g_num=95&gs_num=229

 

하루코스도 가능하구여~~~

9시쯤 산막이 옛길에 도착하시게끔 출발하시는 것이 좋습니다... 왜냐하면 주차할 곳이 좀 없거든여~~

그리고 갈은계곡은 입구에 주차를 하시고 좀 걸으셔야 합니다..

차가 계곡으로 못들어 가거든여~~

그래서 짐은 최소화 하시는 것이 좋구여~~~ 취사가 안되서 갈은계곡 가기전 점심을 하시는 것이 좋습니다...

 

여름휴가지 선정에 고민하시는 분들을 위해 도움이 되었음 하구여~~~

혹 다녀오시게 되면 한줄의 후기부탁드려요~~

Trackback 0 Comment 0
2011.02.25 19:37

고급 Bash 스크립팅 가이드


http://member.hitel.net/~himaster/edu/shell/
Trackback 0 Comment 0
2011.02.25 19:37

Shell 전달날짜 구하기

#!/usr/local/bin/bash

YEAR=`date +%Y`
MONTH=`date +%m`

if [ $MONTH -eq 01 ]
then
    YEAR=`expr $YEAR - 1`;
    MONTH=12;
else
    MONTH=`expr $MONTH - 1`;
fi

if (( $MONTH < 10 ))
then
    MONTH=0$MONTH;
fi

CDATE=$YEAR$MONTH;

echo $CDATE;

Trackback 0 Comment 0
2011.02.06 07:51

동물이 주인공인 영화

마음이 1, 2
웨일 라이더 - 2002
프리윌리
마리모 이야기
캣츠 앤 독스 1, 2 (Cats & Dogs)
에이트 빌로우 - 2006
투 브라더스 - 2004
스팟 - 2001
아름다운 비행
베어 - 1988, The Bear
하치이야기
듀마
벤지 1, 2, 3, 4 - 1974, 1977, 1987, 2004
폴리 - 1998
꼬마돼지 베이브 1, 2 - 1995, 1998
다저스 몽키 - 1994
늑대 개 1, 2 - 1991, 1994
머나먼 여정 1, 2 - 1993, 1996
베토벤 1, 2 - 1992, 1993
그랑블루 - 1988
정글 속의 고릴라 - 1988
말리와 나 - 2008



* 에니메이션
볼트 - 2008
라이온 킹
폭풍치는 밤에
Trackback 0 Comment 0
2010.12.16 11:37

grep 제외문자열 -v -Ev


grep 제외문자열 -v -Ev

grep에서 특정문자열을 추출하는건 다들 쓰는데 제외하는건 의외로 모르는사람이 많다.

grep Hello a |grep -v apple|grep -v orange| grep -v banana

-v 옵션을 반복하여... 이렇게 쓰는방법이 있고...

grep Hello a |grep -Ev 'apple|orange|banana'

Trackback 0 Comment 0
2010.09.01 13:56

(unix)shell script 어제 날짜 구하기

유닉스 계열중 Solaris, HP, AIX에서는 다음과 같이 하면 어제 날짜를 바로 구할수 있습니다.

 

TZ=KST+15;     UNIX는 Time Zone이라고 해서 지역별 시간대를 가지고 있습니다. 한국은 표준시에 대해서 TZ=KST-9 입니다. 하지만 하루전으로 가기 위해서는 24시간을 더해준답니다. 그래서 KST+15입니다.

DATE=`date +%Y%m%d`

여기서 날짜가 어제 날짜가 구해지는거죠.

echo $DATE

실질적으로 출력해보세요.

 

위를 간단하게 해보면

따라서 yesterday=`TZ=KST+15; date +%Y%m%d`  *주의 : 여기서 `는 명령어 수행을 나타내는 문자로 자판 1번 바로 왼쪽옆에 있는 문자입니다. 아시겠지만 주의하세요.

 

 

도움이 되시길 바랍니다.

 

Linux는 어제 날짜를 구하는 명령어가 따로 있습니다.

 

 

출처 : 지식in

 

============================================================================

 

 

 

오늘 날짜를 구하는 것

date +%Y%m%d

 

어제 날짜를 구하는 것

date +%Y%m%d -d '-1days'

또는

date +%Y%m%d --date '1 days ago'

 

 

쉽다.

물론 man date 보고 하면 좋다.

 

 

출처 : http://blog.naver.com/knight76/30022930265

Trackback 1 Comment 0
2010.09.01 13:55

(unix)shell script CASE문 예제

#!/bin/bash
while [ : ]
do
        echo
        echo -n "Press any key and hit Enter. To stop, enter @ : "
        read char
        case $char in
                "@"   ) break;;
               
[A-Z][A-Z][A-Z]
) echo "uppercase";;
                [0-9][0-9][0-9]
) echo "digit";;
                [a-z][a-z][a-z]
) echo "lowercase";;
                *     ) echo "other" ;;
        esac
done
exit 0

Trackback 0 Comment 0
2010.09.01 13:53

(unix)shell script 예제


/var/log/messages* 화일에서

aaa 라는 문자열이 들어간  행만 뽑아 화일1로 저장하고

그중 8번째 필드값만 추출하는데 데이타가 겹치는 경우가 있어  (중복된 값은 제거) 하고 

화일2로 저장

 

 

grep aaa /var/log/messages* >file1

awk '{print $8}' file1 | sort | uniq >file2

 

두개의 구문을 아래와 같이 한 줄로 실행할 수도 있습니다.

grep aaa /var/log/messages* | awk '{print $8}' | sort | uniq >file2

Trackback 0 Comment 0
2010.09.01 13:51

(oracle)오라클 PL/SQL은 무엇인가?

PL/SQL은 무엇인가?

- PL/SQL(Procedural Language/SQL)의 약어
- 오라클 DB 환경에서 실행되는 절차적인 데이터베이스 프로그래밍 언어
- 표준 SQL과 3세대 언어의 강력한 일부 기능을 포함한 SQL의 확장 언어
- PL/SQL에서는 프로그램 단위를 블록(block)이라 부르며, 애플리케이션 로직들을 작성

그림 8.1 SQL문과 PL/SQL 블록의 실행 비교




■ 오라클 환경에서 PL/SQL을 학습하는 이유

▪ 오라클 개발 도구를 수행하는 모든 프로그래밍의 기초
▪ 클라이언트가 아닌 서버 상에서 프로세스를 수행하는데 PL/SQL을 사용함
▪ PL/SQL을 사용하면 업무 규칙이나 복잡한 로직을 캡슐화(Encapsulation)할 수 있어, 모듈화(Modularity)와 추상화(Abstraction)가 가능
▪ 데이터베이스 트리거를 통하여 데이터베이스 무결성을 제약하는 복잡한 규칙의 코딩과 변경 내역, 데이터를 복사
▪ PL/SQL은 독립적인 플랫폼 수준을 제공

■ PL/SQL에서 제공하는 명령문은
    ▪ 모든 SQL문
    ▪ 변수 및 상수 등의 선언문
    ▪ 대입문
    ▪ 조건 판단문
    ▪ 제어 흐름문
    ▪ 반복 처리문

■ PL/SQL로 작성할 수 있는 것은?

   ▪ SQL*Plus 스크립트(scripts)
   ▪ 프로시저(Procedure), 함수(Function) 서브프로그램
   ▪ 패키지(Package)
   ▪ 데이터베이스 트리거 (Database Trigger)
   ▪ 애플리케이션 로직 (Application Logic)

8.2 PL/SQL의 기본 블록 구조
    - PL/SQL의 프로그램 단위는 블록(Block)


    DECLARE    선택       변수와 상수, 프로시저와 함수 서브프로그램,
                                   커서 등을 선언
          선언문
           .....

     -----------------------------------------------
     BEGIN          필수     처리할 명령문들을 절차적으로 기술
                                    ▪ 모든 SQL문
          실행문                 ▪ 대입문, 반복 처리문, 조건 판단문, 제어 흐름문
          .....                     ▪ 커서 처리문

     -----------------------------------------------
     EXCEPTION   선택      오류 처리에 관한 예외처리 명령문을 기술
    
         예외처리문
         .....

    -----------------------------------------------
     END;              필수

/


그림 8.2  PL/SQL의 기본 블록 구조


8.3 PL/SQL의 블록 작성 및 실행

8.3.1 PL/SQL 블록의 작성

     ▪ ‘무엇을 어떻게 처리할 것인가?’를 분석
  ▪ DECLARE를 기술하고, 블록에서 필요한 변수나 상수, 서브 프로그램, 커서 등을 문법에 맞추어 한 줄에 하나씩 기술
  ▪ BEGIN을 기술하고, 절차적인 실행 순서에 의하여 명령문을 기술
  ▪ EXCEPTION을 기술하고, 실행절에 기술된 명령문이 실행될 때 발생될 수 있는 오류에 대한 예외처리문을 기술
  ▪ 마지막으로 END;을 기술
  ▪ PL/SQL 블록에서 한 문장이 종료할 때마다 세미콜론(;)을 쓴다.

【예제 】
  SG_Scores 테이블에서 학번이 ‘C9901'인 학생의 평균점수를 계산하여 출력하는 익명의 블록을 작성하라.

SQL> SET SERVEROUTPUT ON
SQL> get ex8_01.sql
  1  DECLARE
  2     v_avg           NUMBER(3)      := 0;
  3     v_student_id    VARCHAR2(5)    := 'C9901';
  4  BEGIN
  5     SELECT   AVG(Score)
  6       INTO   v_avg
  7       FROM   SG_Scores
  8       WHERE  student_id = v_student_id
  9       GROUP  BY student_id;
10       DBMS_OUTPUT.PUT_LINE (v_student_id || '의 평균점수는 ['
11   || v_avg || ']점 입니다.');
12* END;
SQL> /
C9901의 평균점수는 [80]점 입니다.

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


8.3.2  PL/SQL 블록의 실행
☞ SQL*Plus를 이용하는 방법
▪ 편집기(editor)로 PL/SQL 블록을 입력한 후, *.sql 파일로 저장

▪ @ 또는 start 명령어로 *.sql 파일을 호출하여 실행

Netterm이나 텔넷(Telnet)을 이용하여 SQL*Plus상에서 블록을 실행

☞ Oracle Developer의 Procedure Builder를 이용하는 방법
▪  Program  PL/SQL Interpreter  메뉴를 선택
▪ PL/SQL Interpreter 화면에 작성한 블록을 입력
▪ END;이 입력되면 자동 실행


8.4 선언절에 변수, 상수 선언

상수는 프로그램이 시작하여 종료될 때까지 일정한 값을 가지는 수,
어떤 값을 대입 불가
12, 87과 같은 숫자형 리터럴과 ‘Computer', '홍길동’, ‘T' 와 같은 문자형 리터럴

변수는 프로그램이 시작하여 종료될 때까지 변하는 수,
어떤 값을 대입 가능. i, Course_id 등과 같이 문자로 지정

8.4.1 PL/SQL의 데이터타입

• SQL에서 사용 가능한 모든 데이터타입과  추가적인 데이터타입

데이터타입                                            설 명
-------------------------------------------------------------------------
BOOLEAN              논리적인 데이터(True, False, Unknown)를 저장할 때 사용
BINARY_INTEGER   부호가 있는 정수를 저장할 때 사용
                             데이터 범위는 -2147483647부터 2147483647까지
   ꋯ NATURAL        정수 중에서 0부터 2147483647까지 저장할 때 사용
   ꋯ POSITIVE        정수 중에서 1부터 2147483647까지 저장할 때 사용
%TYPE                  기존 테이블의 한 칼럼에 정의된 데이터타입을 참조
%ROWTYPE           기존 테이블의 모든 칼럼에 정의된 데이터타입을 참조

8.4.2 변수와 상수 선언

변수명 데이터타입(크기)                    [ := 초기값 ] ;
상수명       CONSTAT   데이터타입(크기)     := 상수값 ;


■ 변수명이나 상수명을 정의할 때는

∙ SQL 객체명과 동일한 규칙으로 정의하고
∙ 상수명은 데이터타입과 일치하는 상수 값을 반드시 기술하고
∙ 한 줄에 한 개의 변수나 상수를 정의하며
∙ 초기 값이 Null이나 0인 경우 생략할 수 있다.

【예제】변수와 상수의 선언 예

P_count NUMBER(3) := 0;
Zip_Code VARCHAR2(9);
I BINARY_INTEGER := 0;
k   CONSTANT POSITIVE := 100;



8.4.3 테이블을 참조하여 변수 선언
     - 기존 테이블에 정의된 데이터타입과 크기를 참조하여 변수를 선언

■ %TYPE

형식=>   변수명  테이블명.칼럼명%TYPE ;

- 기존 테이블의 칼럼에 선언된 데이터타입과 크기를 참조하여 변수를 선언
- 테이블 칼럼의 제약조건은 적용되지 않음.


        v_student_id    SG_Scores.student_id%TYPE := 'C9901';
        v_avg           SG_Scores.Score%TYPE      := 0;
        v_grade         SG_Scores.Grade%TYPE;  

■ %ROWTYPE

형식=> 변수명   테이블명%ROWTYPE ;

    - 기존 테이블의 각 칼럼에 정의된 데이터타입과 크기를 참조
    - 칼럼 수와 동일한 복수 개의 변수가 선언,
    - 각 기억 장소의 구분은 “변수명.칼럼명”으로 구분


【예제】SG_Scores 테이블을 참조하여 학번과 평균 점수를 저장하기 위한 변수를 %ROWTYPE을 이용하여 선언하라.


SQL> get ex8_04.sql
  1  DECLARE
  2     v               SG_Scores%ROWTYPE;
  3     v_cnt           NUMBER(2)       := 0;
  4  BEGIN
  5     v.student_id    := 'C9901';
  6     SELECT Count(*), AVG(SCORE)
  7       INTO   v_cnt, v.Score
  8       FROM   SG_Scores
  9       WHERE  student_id = v.student_id
10       GROUP  BY student_id;
11      IF v.score >= 90
12         THEN  v.grade := 'A';
13         ELSIF v.Score >= 80
14               THEN v.grade := 'B';
15               ELSIF v.Score >= 70
16                     THEN v.grade := 'C';
17                     ELSIF v.Score >= 60
18                           THEN v.grade := 'D';
19         ELSE  v.grade := 'F';
20      END IF;
21      DBMS_OUTPUT.PUT_LINE (v.student_id || '의 과목수는 [' ||
22                  v_cnt || ']이고 평균점수는 [' || v.Score ||
23                  ']점 [' || v.grade || '] 등급입니다.');
24* END;

8.4.4 PL/SQL 테이블과 사용자 정의 레코드 선언

■ PL/SQL 테이블 선언
   데이터타입과 크기가 동일한 기억장소가 동적으로 복수 개 선언

형식=>
   TYPE 테이블타입명 IS TABLE OF
                데이터타입(크기)
    INDEX BY BINARY_INTEGER;

    테이블명   테이블타입명;


- 각 기억장소 구분은 “테이블명(첨자명)”,
- 첨자명은 정수로 된 첨자명이거나, 양의 정수
- 테이블의 크기는 사용할 때 동적으로 결정

【예제】PL/SQL 테이블 선언 및 사용 예


DECLARE
TYPE Table_type IS TABLE OF
      VARCHAR2(20)
INDEX BY BINARY_INTEGER;

v_Dept_Name    Table_type;

BEGIN
...
v_Dept_Name(2) := '컴퓨터정보기술계열‘;
...
END;


■ 사용자 정의 레코드 선언
    - 데이터타입과 크기가 다른 기억장소가 복수 개 선언

형식=>  TYPE 레코드타입명 IS RECORD
         ( 필드명1  데이터타입(크기) [NOT NULL] [초기값],
            . . .
           필드명n  데이터타입(크기) [NOT NULL] [초기값] ) ;

          레코드명 레코드타입명;

       - 각 기억 장소의 구분은 “레코드명.필드명“으로 구분

【예제 】사용자 정의 레코드 선언 및 사용 예


DECLARE
TYPE  Record_Type IS RECORD
      Dept_ID   Department.Dept_ID%type,
      Dept_Name Department.Dept_Name%type;

Dept_Rec   Record_Type;
...
BEGIN
...
Dept_Rec.Dept_ID := '컴정‘;
Dept_Rec.Dept_Name := '컴퓨터정보기술계열‘;
...
END;

8.5 조건 판단문

문법>
       IF 조건1
       THEN 명령문1; . . . ; 명령문N;
       [  ELSIF 조건2
       [         THEN 명령문1; . . . ; 명령문N;   ]
       [      ELSIF 조건3
   . . .
       [  ELSE  명령문1; . . . ; 명령문N; ]
        END IF;

- 조건의 결과가 참이면 THEN 이하의 명령문을 처리하고,
  거짓이면 ELSIF절을 실행
- 조건이 모두 거짓이면 ELSE절
- ELSIF문은 16개까지 반복하여 사용


IF문은

① IF 조건 THEN 명령문_1
   END IF;

② IF 조건 THEN 명령문_1
           ELSE 명령문_2
   END IF;

③ IF 조건_1
     THEN  명령문_1
     ELSIF  조건_2
            THEN  명령문_2
            ELSIF 조건_3  THEN 명령문_3
                    ...
       ELSE 명령문_n
   END IF;

【예제 】 IF ~ THEN ~ ELSIF문 예

IF v.score >= 90
       THEN  v.grade := 'A';
       ELSIF v.Score >= 80
             THEN v.grade := 'B';
             ELSIF v.Score >= 70
                   THEN v.grade := 'C';
                   ELSIF v.Score >= 60
                         THEN v.grade := 'D';
       ELSE  v.grade := 'F';
    END IF;



  
8.6 반복문

8.6.1 LOOP문

문법> LOOP
명령문1;
. . .  ;
명령문N;
END LOOP;

- EXIT문은 무한 루프로부터 탈출하는 명령문

■ EXIT문

문법> ① EXIT;
② EXIT [레이블명] WHEN 조건;

∙ EXIT문은 무한 루프로부터 무조건 탈출
∙ EXIT WHEN 조건 명령문은 조건이 참(True)일 때 탈출


【예제 】1에서 10까지 반복하여 TEMP 테이블에 저장하라. (LOOP문 사용)

SQL> CREATE TABLE Temp (
    2  Col1 NUMBER(3),
    3  Col2   DATE);

SQL> DECLARE
  2  Max_No  CONSTANT POSITIVE := 10;
  3  I                NATURAL  := 0;
  4  BEGIN
  5     LOOP
  6        I := I + 1;
  7        EXIT WHEN I > Max_No;
  8        INSERT INTO TEMP
  9           VALUES (I, SYSDATE);
10     END LOOP;
11* END;

SQL> SELECT * FROM Temp;

8.6.2 WHILE ~ LOOP문

조건이 참(True)일 때, LOOP ~ END LOOP내의 명령문들을 반복 처리

문법> WHILE 조건 LOOP
명령문1;
. . . ;
명령문N;
END LOOP;


【예제】1에서 10까지 반복하여 TEMP 테이블에 저장하라. (WHILE문 사용)

SQL> DECLARE
  2  Max_No  CONSTANT POSITIVE := 10;
  3  I                NATURAL := 0;
  4  BEGIN
  5     WHILE I < MAX_NO LOOP
  6        I := I + 1;
  7        INSERT INTO TEMP
  8           VALUES (I, SYSDATE);
  9     END LOOP;
10* END;

8.6.3 FOR ~ LOOP문

  - 변수가 초기 값부터 1씩 증가하여 최종 값이 될 때까지 반복 처리

문법> FOR 변수 IN [REVERSE] 초기값..최종값 LOOP
명령문1;
. . . ;
                명령문N;
          END LOOP;

【예제】1에서 10까지 반복하여 TEMP 테이블에 저장하라. (FOR문 사용)


SQL> DECLARE
  2  Max_No  CONSTANT POSITIVE := 10;
  3  I                NATURAL := 0;
  4  BEGIN
  5     FOR I IN 1..MAX_NO LOOP
  6         INSERT INTO TEMP
  7           VALUES (I, SYSDATE);
  8     END LOOP;
  9* END;


8.7 NULL문

   - 어떤 처리도 하지 않음. 문법 형식을 갖추기 위해 사용

문법>NULL;


【예제 】변수 a가 0보다 크지 않으면 i 값을 1 증가시켜라.

  IF a > 0 THEN   NULL;
           ELSE   i = i + 1;
  END IF;

8.8 대입문

문법> expr1 := expr2

우변(칼럼명, 변수, 리터럴, 수식, 함수)의 값을 좌변(칼럼명, 변수)에 저장



8.9 제어문

   GOTO문은 무조건 레이블명으로 이동

문법> GOTO  레이블명


【예제 】GOTO문을 이용한 제어문 사용 예

                       ....
GOTO label_1;
                       ....
    <>
                    ...


8.10 주석 달기

☞ --  문자열
    - 단일 줄에 주석


☞ /*  문자열  */
    - 여러 줄로 주석

8.11 실행절에 SQL문 사용

8.11.1  PL/SQL에서의 SELECT문

- 검색된 행의 수가 한 행이 되어야 하고, 검색한 값을 INTO절의 변수에 저장
- 검색된 행의 수가 0행(NO_DATA_FOUND)이거나 복수 행(TOO_MANY_ROWS)일 때 오류가 발생
- ORDER BY절은 사용하지 않음

문법>

SELECT 칼럼명1, 칼럼명2, 리터럴, 함수, 수식, ...
INTO         변수명, . . .
FROM 테이블명1, 테이블명2, 뷰명1, ...
WHERE 검색조건1 ...
GROUP BY   칼럼명1, 칼럼명2, ...
HAVING 검색조건2 ;

■ SQL과 PL/SQL에서 SELECT문의 차이점

  ∙ SELECT 구문이 다름
  ∙ 결과 행
  ∙ 결과를 출력

【예제 】SG_Scores 테이블을 참조하여 ‘C9901'학번의 과목수, 평균 점수를 계산하여 출력하라.

SQL> DECLARE
  2     -- 변수 선언
  3     v_avg        NUMBER(3)    := 0;   -- 평균점수 저장
  4     v_cnt        NUMBER(2)    := 0;   /* 과목수 저장 */
  5     v_student_id VARCHAR2(5)  := 'C9901';    /* 검색할 학번 */
  6  BEGIN
  7     -- 학번의 데이터를 검색하여 과목수와 평균점수 계산
  8     SELECT   COUNT(Course_Id), AVG(Score)
  9       INTO   v_cnt, v_avg
10       FROM   SG_Scores
11       WHERE  student_id = v_student_id
12       GROUP  BY student_id;
13     -- 화면에 표시
14       DBMS_OUTPUT.PUT_LINE (v_student_id || '의 [' || v_cnt ||
15      ']과목에 대한 평균점수는 [' || v_avg || ']점 입니다.');
16* END;


☞ SET SERVEROUTPUT ON
【예제 】SG_Scores 테이블을 참조하여 ‘A9901'학번의 과목수, 평균점수를 계산하여 출력하라.


SQL> DECLARE
  2     v_avg        NUMBER(3)     := 0; -- 평균점수 저장
  3     v_cnt        NUMBER(2)     := 0; /* 과목수 저장 */
  4     v_student_id VARCHAR2(5)   := 'A9901';  /* 검색할 학번 */
  5  BEGIN
  6     SELECT   COUNT(Course_Id), AVG(Score)
  7       INTO   v_cnt, v_avg
  8       FROM   SG_Scores
  9       WHERE  student_id = v_student_id
10       GROUP  BY student_id;
11      DBMS_OUTPUT.PUT_LINE (v_student_id || '의 [' || v_cnt ||
12     ']과목에 대한 평균점수는 [' || v_avg || ']점 입니다.');
13* END;
SQL> /
DECLARE
*
1행에 오류:
ORA-01403: no data found
ORA-06512: at line 8

8.12  PL/SQL에서 화면에 출력하기

▪ DBMS_OUTPUT 내장프로시저 사용하기 위한 SQL*Plus 명령어
문법> SET SERVEROUTPUT ON


▪DBMS_OUTPUT 프로시저의 활성화와 비활성화
문법>  DBMS_OUTPUT.ENABLE;
          DBMS_OUTPUT.DISABLE;

▪문자열을 화면에 출력하는 DBMS_OUTPUT.PUT_LINE
문법>  DBMS_OUTPUT.PUT_LINE(‘출력할 내용’)


【예제】‘HELLO WORLD' 문자열을 DBMS_OUTPUT 프로시저를 비활성화하여 출력하고, 활성화한 후 출력하라.

SQL> SET SERVEROUTPUT ON
SQL> BEGIN
  2     DBMS_OUTPUT.DISABLE;
  3     DBMS_OUTPUT.PUT_LINE('1. HELLO WORLD.');
  4     DBMS_OUTPUT.ENABLE;
  5     DBMS_OUTPUT.PUT_LINE('2. HELLO WORLD.');
  6* END;
SQL> /
2. HELLO WORLD.

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

SQL>

출처 : [기타] 인터넷 : http://www.it-sesang.com 오라클공인센터


Trackback 0 Comment 0