본문 바로가기
연습 문제

예제 따라가며 쉽게 배우는 오라클 연습 문제 p.334

by 알기 쉬운 코딩 사전 2023. 1. 5.
반응형

연습문제 sql은 모두 제가 직접 작성한 것이므로 오타, 오답이 존재할 수 있습니다.

궁금하신 점이 추가로 있을 시에는 문의하시면 최대한 답변드리겠습니다.

 

1. TEST 이름으로 아래의 테이블을 생성하여라.

 

칼럼명 A B C
DataType num num v2
길이 3 3 10

[답]

create table test
(A number(3),
B number(3),
C varchar2(10));

 

2. 프로시저 실행 시 2개의 데이터를 입력받아 2개의 데이터가 같으면 "EQUAL", 같지 않으면 "NOT EQUAL"의 값을 테이블 TEST에 삽입시키는 프로시저 P_TEST를 생성하여라.

 

[답]

create or replace procedure P_TEST(v_a in number, v_b in number)
is
v_c test.c%type;
begin
    if v_a = v_b then
        v_c := 'EQUAL';
    else
        v_c := 'NOT EQUAL';
    end if;
    insert into test(a, b, c)
    values(v_a, v_b, v_c);
end;
/

 

+) (10, 10)과 (10, 20)을 실행시키고 결과를 확인하여라.

 

[답]

(10, 10) 프로시저 실행

exec P_TEST(10, 10)

결과 확인

select *
from test;

(10, 20) 프로시저 실행

exec P_TEST(10, 20)

결과 확인

select *
from test;

 

3. 위의 프로시저에서 두 개의 값을 자동으로 입력받을 수 있도록 FOR 문을 사용하여 테이블 TEST에 삽입하는 PL/SQL 블록을 생성하여라.(I는 1에서 3까지, J는 1에서 5까지)

 

[답]

begin
    for i in 1..3 loop
        for j in 1..5 loop
            p_test(i, j);
        end loop;
    end loop;
end;
/

 

4. 테이블 TEST의 내용을 확인하여라.

 

[답]

select *
from test;

 

5. 테이블 TEST의 A 칼럼과 B 칼럼의 값이 같은 것이 몇 개 있는지를 알아보는 함수 F_TEST를 생성하여라.

 

[답]

create or replace function F_TEST return number
is
    v_count number(2) := 0;
begin
    select count(*)
    into v_count
    from test
    where a = b;
    return(v_count);
end;
/

 

6. 5번의 결과를 확인하여라.

 

[답]

variable y number

exec :y := F_TEST

print y

 

+) 다음과 같은 조건을 만족하는 프로시저 P2_TEST를 작성하여라.

- 테이블 TEST의 A 칼럼과 B 칼럼의 값을 비교해서 A가 B보다 크면 C의 값을 "A가 B보다 크다"로 변경

- B가 A보다 크면 큰 행들은 선택해서 크면 "B가 A보다 크다"로 변경

- A와 B가 같으면 "A와 B가 같다"로 변경.

 

[답]

create or replace procedure P2_TEST
is
begin
    update test
    set c = 'A가 B보다 크다'
    where a > b;
    update test
    set c = 'B가 A보다 크다'
    where a < b;
    update test
    set c = 'A와 B가 같다'
    where a = b;
end;
/

 

+) 프로시저를 실행시키고 결과를 확인하여라.

 

[답]

해당 문제 테이블은 C의 데이터 유형이 VARCHAR2(10)으로 설정되어있습니다.
따라서 TEST 테이블의 데이터 유형을 변경시키고 진행해주어야합니다.
alter table TEST modify C varchar2(20);

프로시저 실행
exec P2_TEST

결과 확인
select *
from test;

 

궁금한 점이 있을 시 덧글 주시면 최대한 답글 드리겠습니다.

반응형

댓글