plsql4
화면 출력 기능을 활성화
SET SERVEROUTPUT ON;
화면출력
DBMS_OUTPUT.PUT_LINE(vno || ‘텍스트’ || vname);
&는 입력값(오라클은 데이터 내에 &를 쓸 수 없다)
…
WHERE empno= ‘&empno’;
으로 쓰면 사용자의 입력값을 받는다.
:=는 할당연산자
:= 를 쓰면 ‘주소에 값을 집어넣겠다’는 뜻이다.
사용자 정의형 변수
1. 변수
스칼라변수(오라클의 일반변수) : CHAR, VARCHAR2…
참조변수
(1) %TYPE (2) %ROWTYPE (3) TYPE
CURSOR (ROW의 집합) => ResultSet
CURSOR 사용법
1) CURSOR 선언
CURSOR cur_name
IS
SELECT * FROM emp (서브쿼리)
2) CURSOR 열기
OPEN cur_name;
3) 데이터 인출 (FETCH)
3-1)상태
%NOTFOUND : 데이터가 모두 인출된 상태
%FOUND : 데이터가 있는지 여부를 확인
%ISOPEN : cursor가 오픈된 상태인지 확인
%ROWCOUNT : 몇개를 인출했는지 확인
4) CURSOR를 닫는다
CLOSE cur_name;
2. 제어문
FOR 변수 IN lo..hi LOOP
처리문장
END LOOP;
FOR i IN 1..9 LOOP
i
END LOOP;
for문 예제 (CURSOR로 ResultSet 받아오기)
SET SERVEROUTPUT ON;
DECLARE
vemp emp%ROWTYPE;
— CURSOR 선언
CURSOR C1 IS SELECT * FROM emp;
BEGIN
FOR vemp IN C1 LOOP
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(vemp.ename||’ ‘||vemp.hiredate||’ ‘||vemp.job);
END LOOP;
END;
/
for문 예제2
SET SERVEROUTPUT ON;
DECLARE
CURSOR emp_cursor IS SELECT ename,sal FROM emp;
star VARCHAR2(1000);
cnt NUMBER:=0;
BEGIN
DBMS_OUTPUT.PUT_LINE(‘사원 급여 현황’);
FOR cur_var IN emp_cursor LOOP
EXIT WHEN emp_cursor%NOTFOUND;
star:=null;
cnt:=ROUND(cur_var.sal/100,0);
FOR i IN 1..cnt LOOP
star:=star||’*’;
END LOOP;
DBMS_OUTPUT.PUT_LINE(cur_var.ename||’ ‘||cur_var.sal||’ ‘||star);
END LOOP;
END;
/
정상 FOR문(i++)
SET SERVEROUTPUT ON;
DECLARE
BEGIN
FOR i IN 0..5 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
/
거꾸로 가는 FOR문(i–)
SET SERVEROUTPUT ON;
DECLARE
BEGIN
FOR i IN REVERSE 0..5 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
/