728x90
반응형
728x170
■ SQL%FOUND 암시적 커서 속성을 사용하는 방법을 보여준다.
▶ 예제 코드 (SQL)
-- 직원 테이블을 생성한다.
CREATE TABLE EMP
(
EMPNO NUMBER(4, 0)
,ENAME VARCHAR2(10)
,SAL NUMBER(7, 2)
,CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
);
-- 직원 테이블에 데이터를 추가한다.
INSERT INTO EMP VALUES(7369, 'SMITH' , 800);
INSERT INTO EMP VALUES(7499, 'ALLEN' , 1600);
INSERT INTO EMP VALUES(7521, 'WARD' , 1250);
INSERT INTO EMP VALUES(7566, 'JONES' , 2975);
INSERT INTO EMP VALUES(7654, 'MARTIN', 1250);
INSERT INTO EMP VALUES(7698, 'BLAKE' , 2850);
INSERT INTO EMP VALUES(7782, 'CLARK' , 2450);
INSERT INTO EMP VALUES(7788, 'SCOTT' , 3000);
INSERT INTO EMP VALUES(7839, 'KING' , 5000);
INSERT INTO EMP VALUES(7844, 'TURNER', 1500);
INSERT INTO EMP VALUES(7876, 'ADAMS' , 1100);
INSERT INTO EMP VALUES(7900, 'JAMES' , 950 );
INSERT INTO EMP VALUES(7902, 'FORD' , 3000);
INSERT INTO EMP VALUES(7934, 'MILLER', 1300);
COMMIT;
-- 직원명 변경하기 프로시저를 생성한다.
CREATE PROCEDURE ChangeEmployeeName(P_OLD_NAME IN EMP.ENAME%TYPE, P_NEW_NAME IN EMP.ENAME%TYPE, P_CHANGED OUT BOOLEAN)
IS
BEGIN
UPDATE EMP
SET ENAME = P_NEW_NAME
WHERE ENAME = P_OLD_NAME;
P_CHANGED := SQL%FOUND;
END;
SET SERVEROUTPUT ON;
DECLARE
V_CHANGED BOOLEAN;
BEGIN
ChangeEmployeeName('ALLEN', 'ALLEN_NEW', V_CHANGED);
IF V_CHANGED = TRUE
THEN
DBMS_OUTPUT.PUT_LINE('UPDATED');
ELSE
DBMS_OUTPUT.PUT_LINE('NO UPDATED');
END IF;
END;
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] 커서 속성 (0) | 2019.11.04 |
---|---|
[DATABASE/ORACLE] FORALL ~ UPDATE ~ RETURNING ~ BULK COLLECT INTO문 사용하기 (0) | 2019.11.04 |
[DATABASE/ORACLE] FORALL 명령 : 레코드 기반 데이터 추가하기 (0) | 2019.11.04 |
[DATABASE/ORACLE] DML 명령문 : RETURNING 키워드 사용하기 (0) | 2019.11.04 |
[DATABASE/ORACLE] SQL%ROWCOUNT 암시적 커서 속성 사용하기 (0) | 2019.11.04 |
[DATABASE/ORACLE] DML문의 암시적 커서 속성 (0) | 2019.11.04 |
[DATABASE/ORACLE] INSERT INTO ~ SELECT ~ FROM 명령 : 데이터 추가하기 (0) | 2019.11.03 |
[DATABASE/ORACLE] 중첩 테이블 데이터 정렬해 출력하기 (0) | 2019.11.03 |
[DATABASE/ORACLE] 중첩 테이블과 테이블 데이터 병합하기 (0) | 2019.11.03 |
[DATABASE/ORACLE] CAST 의사 함수 사용하기 (0) | 2019.11.03 |
댓글을 달아 주세요