IT/Oracle

오라클 PL/SQL insert, update, delete, merge 예제

노마드오브 2018. 7. 19. 16:34

-- pl_test 테이블 생성
create table pl_test
(no number,
name varchar2(10));


-- pl_seq 시퀀스 생성
create sequence pl_seq;


-- pl_test에 값을 insert하는 pl/sql문
begin
insert into pl_test
values(pl_seq.nextval,'bbb');
end;



SET VERIFY off; 
-- 사용자값을 입력 받기 전의 pl/sql문과
-- 입력받은 값을 대입한 후의 pl/sql문을 출력창에 표출할지 여부

-- off 이므로 출력하지 않는다


-- pl_test2 테이블 생성
create table pl_test2(  no number,
                        name varchar2(10),
                        addr varchar2(10));


-- no, name, addr 사용자 값을 입력받아 insert하는 pl/sql문

DECLARE
    v_no number := '&no';
    v_name number := '&name';
    v_addr number := '&addr';
BEGIN
    insert into pl_test2
    values(v_no, v_name, v_addr);
END;

select * from pl_test2;


-- update

BEGIN

    UPDATE pl_test
    set name = 'bbb'
    where no = 2;
END;


-- delete

BEGIN

    delete from pl_test
    where no=1;
end;




○ merge

-- pl_merge1 테이블 생성

create table pl_merge1
( no number,
name varchar2(10));


-- pl_merge2 테이블 생성

create table pl_merge2

as select * from pl_merge1;


insert into pl_merge1 values (1,'aaa');

insert into pl_merge1 values (2,'bbb');




insert into pl_merge2 values (1,'ccc');

insert into pl_merge2 values (3,'ddd');




-- merge pl/sql

begin

    merge into pl_merge2 m2
    using pl_merge1 m1
    on(m1.no = m2.no)
    when matched then
    update set
    m2.name=m1.name
    when not matched then
    insert values(m1.no, m1.name);
end;




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

오라클 제공 테스트 테이블 DUAL  (0) 2018.07.23
오라클 계층형 쿼리와 ROWNUM  (0) 2018.07.23
오라클 ROWNUM  (0) 2018.07.23
오라클 셋팅방법 및 명령어  (0) 2018.07.23
오라클 PL/SQL  (0) 2018.07.19