--rowtype 변수를 활용한 데이터의 변경
declare
c_rec row_test%rowtype; -- c_rec의 타입을 row_test로
begin
select * into c_rec
from row_test
where no=3; -- no가 3인 행 전체를 c_rec로
c_rec.name := '강길동'; -- c_rec의 name을 강딜동으로
update row_test2
set row = c_rec -- 테이블의 행 의미
where no = 3; -- c_rec로 update
end;
/
select * from row_test2;
-- 사용자로부터 두 개의 숫자를 입력 받아서 합을 구하는 예
-- 치환 연산자 & 사용
declare
no1 number := &no1; -- 치환 변수 사용
no2 number := &no2;
vsum number;
begin
vsum := no1+no2;
dbms_output.put_line('첫 번째 수 : '||no1||', 두 번째 수 : '||no2||', 합 : '||vsum||' 입니다.');
end;
/
/*
복합변수
record type 변수 지정 방법
1. type 타입명 is record();
2. 식별자 타입명; -- 변수처럼...?
*/
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;
/
declare
type emp_rec2 is record(
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; -- rec2에 넣고
vemp_id employees.employee_id%type := '&empid'; -- vemp_id를 입력값으로
begin
select employee_id, last_name, nvl(email, '없음'), salary
into rec2
from employees
where employee_id = vemp_id; -- 입력한 vemp_id 값이 employee_id와 같으면 rec2에 넣기
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;
/