DB 32

32.[오라클]컬렉션 사용자정의 데이터타입 정리

사용자 정의 타입으로 사용할수 있는 컬렉션 타입은 연관배열을 제외한 VARRAY와 중첩테이블만 사용할수 있다.컬렉션은 아니지만 OBJECT타입도 사용자 정의 타입으로 사용할수 있다.(객체지향과 비슷한 개념이지만 메소드나 함수등에 따라 쫌 다르다..) ※컬렉션 타입별 선언구문VARRAY : CREATE OR REPLACE TYPE [타입명] IS VARRAY(최대크기) OF [값타입];중첩 테이블 : CREATE OR REPLACE TYPE [타입명] IS TABLE OF 값타입;OBJECT : CERATE OF REPLACE TYPE [타입명] IS OBJECT(타입1 타입1_데이터타입 , 타입2 타입2_데이터타입......);별도 타입을 선언하지 않고 사용자가 정의한 컬렉션 타입을 생성하여 매번 선언할..

DB/ORACLE 2025.01.25

31.[오라클]컬렉션 메소드

메소드명메소드타입설명사용법DELETE프로시저컬렉션 요소 삭제컬렉션.DELETETRIM프로시저VARRAY나 중첩테이블의 끝에서 요소를 삭제컬렉션.TRIM(2)  → 맨마지막부터2개요소제거EXTEND프로시저VARRAY나 중첩테이블의 끝에서 요소추가컬렉션.EXTEND → 맨끝에NULL추가 컬렉션.EXTEND(2,1)  → 맨끝에 첫번째요소를 2개복사하여 추가EXISTS함수VARRAY나 중첩테이블에 특정요소가 존재하면 TRUE를 반환일반적인 EXISTS부분과 동일하게 쓰면 된다.(특정값이 존재하는지여부)FIRST함수컬렉션이 첫번째 인덱스 반환FOR 컬렉션.FIRST..컬렉션.LASTLAST함수컬렉션의 마지막인덱스를 반환FOR 컬렉션.FIRST..컬렉션.LASTCOUNT함수컬렉션의 요소 총 갯수를 반환컬렉션.CO..

DB/ORACLE 2025.01.25

30.[오라클]컬렉션

컬렉션은 이전 절에서 학습한 레코드와 유사한 데이터 타입으로 레코드보다는 한층 더 향상되고 확장된 형태로,객체지향 프로그램의 클래스와 유사하다.컬렉션의 종류 : 연관배열,VARRAY,중첩테이블   ※ 선언 방법 연관배열 : TYPE  [연관배열명] IS TABLE OF [연관배열값타입] INDEX BY [인덱스타입]; VARRAY : TYPE  [VARRAY명] IS VARRAY(최대크기) OF 요소값_타입; 중첩테이블 : TYPE [중첩테이블명] IS TABLE OF [값타입]; 연관배열연관배열이란 키와 값으로 구성된 컬렉션으로, 키를 인덱스라고 부르기 때문에 연관 배열을 index-by 테이블이라고 한다. 연관배열은 키(인덱스)를 통해 값을 찾는 구조로 연관배열의 키는 유일키로 조회가 된다. 따라서 ..

DB/ORACLE 2024.04.13

29.[오라클]레코드

레코드는 일반 빌트인 타입으로 변수를 선언하면 해당 변수는 한번에 하나의 값만 가질수 있지만 레코드는 여러개의 값을 가질수 있는 복합형 구조이다. 해당 측면에서 보면 테이블과 흡사하며 테이블과 다른점이 있다면 테이블은 여러개의 로우를 가지수 있는 2차원 형태인데 레코드는 가질수 있는 로우의 수는 딱 한개만 가질수 있다. 따라서 레코드는 서로 다른 유형의 데이터 타입을 가진 변수 여러개가 한줄로 붙어있는 형태라고 이해 할수 있다. 1.사용자형 레코드 사용자가 직접 레코드를 정의하고 선언해 사용할 수 있다. TYPE 레코드명 IS RECORD ( 필드명1 필드1 타입 [[NOT NULL] := 디폴트값], 필드명2 필드2 타입 [[NOT NULL] := 디폴트값] ......... ); 레코드변수명 레코드명..

DB/ORACLE 2024.03.06

28.[오라클]커서

특정 SQL문장을 처리한 결과를 담고 있는 영역(PRIVATE SQL 메모리영역)을 가리키는 일종의 포인터로 커서를 사용하면 처리된 SQL문장의 결과 집합에 접근할수있다. 묵시적 커서 : 오라클 내부에서 자동으로 생성되어 사용하는 커서 명시적 커서 : 사용자가 직접 정의해서 사용하는 커서 커서의 삶은 "커서열기(open) - 패치(fetch) - 커서닫기(close)"로 3단계로 진행이 된다. 명시적 커서는3단계를 선언해야 하지만 묵시적 커서는 3단계가 자동으로 처리된다. 위의 이미지처럼 SQL%ROWCOUNT라는 커서를 사용하여 해당 SQL문에서 처리된 결과 ROW수를 참조한것이다. ※커서의 속성 속성명 설명 SQL%FOUND 결과 집합의 패치 로우수가 1개이상이면 TRUE,아니면 FALSE SQL%N..

DB/ORACLE 2024.02.24

27.[오라클]트랜잭션

트랜잭션은 거래라는 뜻으로 거래의 안정성을 확보하는 방법으로 데이터 베이스에서 처리방법으로는 특정 테이블에서 데이터를 읽어 조작 후 다른 테이블에 데이터를입력하거나 갱신,삭제하는데 처리 도중 오류가 발생하면 모든 작업을 원상태로 되돌리고, 처리 과정이 모두 성공했을때 최종적으로 데이터 베이스에 반영하는 것이 바로 트랜잭션 처리이다. COMMIT COMMIT을 실행하게 되면 DB에 가해진 변경사항을 반영한다. (만약 반영이 되었다면 AUTO COMMIT이 되어있는 상태..) 사용법) COMMIT [WORK] ROLLBACK ROLLBACK을 실행하게 되면 DB에 가해진 변경사항을 취소하여 기존 그대로를 유지한다. 사용법)ROLLBACK [WORK][TO [SAVEPOINT] 세이브포인트명]; SAVEPOI..

DB/ORACLE 2024.02.24

26.[오라클]예외처리

예외는 두가지로 나뉘는데 오라클에서 발생시키는 시스템예외와 사용자가 의도적으로 발생시키는 사용자 정의 예외로 나뉜다. [예외 처리 구문] EXCEPTION WHEN 예외명1 THEN 예외처리 구문1 WHEN 예외명2 THEN 예외처리 구문2 ... WHEN OTHERS THEN 예외처리구문n; 만약 예외처리 구문을 넣지 않고 프로시저를 실행하면 시스템에서 예외를 발생시켜 프로시저 실행을 중단하지만 사용자 정의 예외를 하게 되면 프로그램 제어권을 획들하여 여러 단계에 걸쳐 수행되는 프로그램의 정상동작을 보장할수 있지만 하지 않게 된 경우 프로그램의 흐름의 끊어져 버린다. [SQLCODE,SQLERRM부분 정리] SQLCODE : 실행부에서 발생한 예외에 해당하는 코드를 반환한다. SQLERRM : 발생한 ..

DB/ORACLE 2024.02.23

25.[오라클]프로시저 정리

>[프로시저 생성 문법 정리] CREATE OR REPLACE PROCEDURE 프로시저 이름 (매개변수명1[IN |OUT |IN OUT]) 데이터 타입[:=디폴트값] , 매개변수명2[IN |OUT |IN OUT]) 데이터 타입[:=디폴트값] ~~~~~~~~~) IS[AS] 변수, 상수등을 선언 BEGIN 실행부 [EXCEPTION 예외처리부] END [프로시저 이름]; CREATE OR REPLACE PROCEDURE 프로시저 이름 : 프로시저 생성 매개변수 : IN은 입력,OUT은 출력 IN OUT은 입력과 출력을 동시에 진행 (미명시할 경우 디폴트로 IN) ※SQL문으로 프로시저 생성하기 CREATE OR REPLACE PROCEDURE KSW.TEST_PRO( PARAM_JOB_ID IN JOBS..

DB/ORACLE 2024.02.20

24.[오라클]PL/SQL 사용자 함수(FUNCTION)

※PL/SQL사용자 정의 함수 함수 생성 CREATE OR REPLACE FUNCTION 함수이름(매개변수1, 매개변수 2,....) RETURN 데이터타입; IS[AS] 변수,상수등 선언 BEGIN 실행부 RETURN 반환값; [EXCEPTION 예외처리부] END [함수이름]; CREATE OR REPLACE FUNCTION : CREATE OR REPLACE구문을 사용하여 함수를 생성. 최초 함수를 만들고 난 다음 수정을 하더라도 구문을 사용해 계속 컴파일 할 숭 있고, 마지막으로 수정된 최종본이 반영 매개변수 : 함수로 전달되는 매개변수로,"매개변수명 데이터 타입"형태로 명시한다. 매개변수는 생략이 가능하다. RETURN 데이터 타입 : 함수가 반환할 데이터 타입을 지정한다. RETURN 반환값 ..

DB/ORACLE 2024.02.20

23.[오라클]PL/SQL제어문 정리

※PL/SQL제어문 정리 제어문 설명 예시 IF문 IF 조건 THEN 조건처리 END IF; ->위와 같이 DECLARE후 IF문을 쓴다. CASE문 CASE문은 2가지 형식으로 처리 가능 1.CASE 표현식 WHEN 결과1 THEN 처리문1; WHEN 결과2 THEN 처리문2; ELSE 기타 처리문; END CASE; 2.CASE THEN 표현식1 THEN 처리문1; THEN 표현식2 THEN 처리문2; ELSE 기타 처리문; END CASE; ->위의 IF문과 같은 결과를 얻을수 있음. LOOP문 LOOP 처리문; EXIT [WHEN 조건]; END LOOP; ->3단에 대한 부분을 위와 같이 처리 LOOP DBMS_OUTPUT.PUT_LINE (SAMPLE_NUMBER ||'*'|| SAMPLE_C..

DB/ORACLE 2024.02.20