바닥코딩
PL/SQL에서 일반 SQL 실행 본문
PL/SQL의 궁극적인 목표는 SQL의 한계를 극복하는 것이지만 가장 중요한 것은 SQL을 실행시키는 기능이 가장 중요합니다. 결국 SQL을 보조하기 위해 만들어진 언어기 떄문에 PL/SQL에 내 SQL 처리 기능을 매우 강력하고, 기본 SQL을 수행할 수 있어야 올바른 활용이라 할 수 있습니다. SQL에서 가장 많이 쓰이는 SELECT, INSERT , UPDATE, DELETE 문 등을 통해 알아보겠습니다.
SELECT
create or replace procedure fn_SalRate
is
v_ename emp.ENAME%type; - --EMP 테이블의 타입 복사
v_empno emp.EMPNO%type;
v_rate number := 1.1;
v_sal number;
begin
v_empno := 7788; -- 조건으로 사용될 변수
SELECT ename , (sal + comm)*v_rate into v_ename, v_sal
from emp
where empno = v_empno ; -- SQL 문에 PL/SQL Q변수 사용
DBMS_OUTPUT.PUT_LINE( v_ename);
end;
위와 같이 SQL 문을 사용할 수 있는데 해당 예제는 실행 결과를 확인해보기 위해 프로시저로 구현 해봤습니다. 해당 결과는 아래와 같습니다.
INSERT
create or replace procedure fn_InsertEmp
is
v_empno EMP.EMPNO%TYPE;
v_ename EMP.ENAME%TYPE;
v_deptno EMP.DEPTNO%TYPE;
begin
v_empno := 9000;
v_ename:= '홍길동';
v_deptno := 40;
insert into emp (empno, ename , hiredate, DEPTNO)
values (v_empno, v_ename, sysdate , v_deptno);
DBMS_OUTPUT.PUT_LINE('insert 건수 :' || SQL%rowcount);
commit;
end;
INSERT 문과 같은경우 EMP 테이블에 타입을 앵커로 받은 각각의 3변수를 원하는 값을 할당해 쿼리를 수행 해보았습니다. 해당 프로시저를 만들고 수행하면 아래와 같이 INSERT 쿼리가 정상적으로 수행된것을 확인 할 수 있습니다.
UPDATE
create or replace procedure updateEmp_proc
is
begin
update emp
set DEPTNO = 30
where EMPNO =9000;
DBMS_OUTPUT.PUT_LINE('update 건수 :' || SQL%rowcount);
end;
바로 이전 INSERT 했던 로우의 DEPTNO를 30으로 업데이트 해보겠습니다 해당 프로시저를 수행하면
DEPTNO가 30으로 바뀐 것으 확인 할 수 있습니다.
DELETE
create procedure DeleteEmp
is
v_empno emp.empno%type := '9000';
begin
delete from emp
where empno = v_empno;
dbms_output.PUT_LINE('delete 건수 :'||sql%rowcount);
commit;
end;
DELETE 쿼리도 위와 같이 수행이 가능합니다.
'데이터 베이스 > 오라클 PLSQL' 카테고리의 다른 글
순환문 (0) | 2021.02.25 |
---|---|
분기문 (0) | 2021.02.25 |
변수, 상수 선언 방법 (0) | 2021.02.25 |
앵커(%) 의 활용 (0) | 2021.02.25 |
PL/SQL의 기본 구조 (0) | 2021.02.25 |