문장 출력하기
-- 문장 출력하기
set serveroutput on;
🍀 반복문
-- 반복문의 종류
-- loop(무한반복문), for, while
-- 1부터 10까지 출력하기
-- loop 무한반복문
declare
n number := 1;
begin
loop
dbms_output.put_line(n);
n := n + 1;
-- eixt (반복문 강제 종료)
if (n > 10) then
exit;
end if;
end loop;
end;
/
-- for문 형식
declare
begin
for 변수 in 시작값.. 끝값 loop
end loop;
end;
/
-- for문
-- 실제로는 숫자를 넣는 경우는 거의 없다
declare
begin
for n in 1..10 loop -- 1부터 10까지 1씩 증가한다. (10번 반복)
dbms_output.put_line(n);
end loop;
end;
/
-- 반복문을 사용해 사원들의 정보를 가져오기
-- select 구문은 하나만 가지고 올 수 있다
-- 때문에 반복문을 활용하면 된다.
declare
vdept dept%rowtype;
begin
for n in 1..4 loop
select * into vdept
from dept
where deptno = 10 * n;
dbms_output.put_line(vdept.deptno || ' : ' || vdept.dname || ' : ' || vdept.loc);
end loop;
end;
/
-- while 문
declare
begin
while 조건식 loop
end loop;
end;
/
-- while 문
declare
n number := 1;
begin
while n <= 10 loop
dbms_output.put_line(n);
n := n + 1;
end loop;
end;
/
-- while 문을 사용해 dept 테이블 4개 출력
declare
vdept dept%rowtype;
n number := 1;
begin
while n <= 4 loop
select * into vdept
from dept
where deptno = 10 * n;
dbms_output.put_line(vdept.deptno || ' : ' || vdept.dname || ' : ' || vdept.loc);
n := n + 1;
end loop;
end;
/
🍀 저장 프로시져
-- 저장 프로시져
-- 누구든 권한만 가지고 있으면 이 프로시져를 사용할 수 있다
create [or replace] procedure 프로시져명 [(매개변수1, 매개변수2, 매개변수3,...)]
is
변수
begin
end;
/
-- 데이터 삭제 프로시져
create or replace procedure del_all
is
begin
delete from emp01;
end;
/
select * from emp01;
-- 프로시져 실행
execute del_all;
- 문제 풀어보기
— sel_all 이란 이름의 저장프로시져 만들기
— dept 테이블의 레코드 모두 조회해서 출력
create or replace procedure sel_all
is
vdept dept%rowtype;
n number := 1;
begin
while n <= 4 loop
begin
select * into vdept
from dept
where deptno = 10 * n;
dbms_output.put_line(vdept.deptno || ' : ' || vdept.dname || ' : ' || vdept.loc);
end;
n := n + 1;
end loop;
end;
/
select * from dept;
execute sel_all;
🍀 매개변수를 사용하는 프로시저
-- 매개변수를 사용하는 프로시저
-- in, out, in out 총 3가지 형태
-- 기본은 in 타입, 필요하면 out 타입
-- in은 데이터를 받고, out은 데이터를 호출, in out은 둘다 가능
-- 특정데이터만 골라서 삭제하는 프로시저
create or replace procedure del_ename(vename emp01.ename%type)
is
begin
delete from emp01
where ename = vename;
end;
/
execute del_ename('SMITH');
select * from emp01;
-- 매개변수 in , out 타입
create or replace procedure sel_empno
(
vempno in emp.empno%type,
vename out emp.ename%type,
vsal out emp.sal%type,
vjob out emp.job%type
)
is
-- 변수
begin
select ename,sal,job into vename, vsal, vjob
from emp
where empno = vempno;
end;
/
-- 실행
-- 바인드 변수
variable var_ename varchar2(15);
variable var_sal number;
variable var_job varchar2(9);
execute sel_empno(7788, :var_ename, :var_sal, :var_job);
print var_ename;
print var_sal;
print var_job;
-- 문제
-- 저장프로시저명 : sel_empname
-- 사워명으로 검색해서 해당사원의 직책을 얻어와서 print 명령어로 값을 출력
create or replace procedure sel_empname
(
vename in emp.ename%type,
vjob out emp.job%type
)
is
begin
select job into vjob
from emp
where ename = vename;
end;
/
variable var_job varchar2(9);
execute sel_empname('SCOTT', :var_job);
print var_job;
'2024_UIUX 국비 TIL' 카테고리의 다른 글
UIUX _국비과정 0618 [톰캣 설치와 JSP 앞으로 배울 구문 맛보기] (0) | 2024.07.08 |
---|---|
UIUX _국비과정 0617 [오라클 SQL, ERD] (0) | 2024.07.08 |
UIUX _국비과정 0613 [오라클SQL 시퀸스 ~ 확장된 SQL 구문] (0) | 2024.07.01 |
UIUX _국비과정 0612 [오라클SQL View] (0) | 2024.07.01 |
UIUX _국비과정 0611 [오라클DB SQL 쿼리문] (0) | 2024.07.01 |