justgo_developer

rowType 변수 및 복합변수 활용 본문

IT/Oracle

rowType 변수 및 복합변수 활용

다날92 2018. 12. 1. 23:35
728x90
반응형

rowtype 변수를 활용한 데이터의 변경


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
declare
c_rec row_test%rowType
 
begin
    select * into c_rec
    from row_test
    where no = 3;
 
    c_rec.name := '홍길동';  //c_rec row중 name 값을 홍길동으로 
 
    update row_test2
    set row = c_rec    //행전체를 c_rec로 변경
    where no = 3;
end;
 
cs


사용자로부터 두개의 숫자를 입력받아서 합을 구하는 예

치환연산자 & 사용


1
2
3
4
5
6
7
8
9
10
11
declare
no1 number:= &no1;
no2 number:= &no2;
vsum number;
 
begin
    vsum:= no1+no2;
    dbms_output.put_line('첫번째 수:' || no1 || ', 두번째 수:'|| no2 ||', 합:'||vsum);
 
end;
 
cs



복합변수


recode Type 변수 지정 방법

1. type 타입명 is record();

2. 식별자 타입명;


 ※ PL/SQL레코드는 여러개의 데이터 타입을 갖는 변수들의 집합이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
declare
type emp_rec is record
(    emp_id employees.employee_id%type , 
    emp_name employees.first_name%type,
    emp_job employees.job_id%type
);
 
rec1 emp_rec;
 
begin
    select employee_id, first_name, job_id
    into rec1
    from employees
    where department_id = 10;
    
    dbms_output.put_line('사번          이름     업무아이디' );
    dbms_output.put_line( rec1.emp_id || '    '||rec1.emp_name|| '    '||rec1.emp_job);
end;
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
declare
type emp_rec2 is recode(
    emp_id employees.employee_id%type,
    emp_name employees.last_name%type,
    emp_email employees.email%type,
    emp_salary employees.salary%type
);
rec2 emp_rec2;
 
vemp_id employees.employee_id%type := &empid;
 
begin
    select employee_id, last_name, nvl(email, '없음'), salary
    into rec2
    from employees
    where employee_id = vemp_id;
 
    dbms_output.put_line('사번:' || rec2.emp_id);
    dbms_output.put_line('이름:' || rec2.emp_name);
    dbms_output.put_line('이메일:' || rec2.emp_email);
    dbms_output.put_line('급여:' || rec2.emp_salary);
 
end;
 
cs


728x90
반응형

'IT > Oracle' 카테고리의 다른 글

조건문(if문, case문)  (0) 2018.12.03
콜렉션, 바인드 변수  (0) 2018.12.02
PL/SQL  (0) 2018.11.30
View(뷰)  (0) 2018.11.22
시퀀스(Sequence)  (0) 2018.11.22