References: [ ORACLE 예외처리 개념, 종류, 사용법 - (8) ]



Contents: Predefined ORACLE Exception


- ACCESS_INTO_NULL 

    : 정의되지 않은 오브젝트 속성에 값을 할당하고자 했을 때 발생하는 예외.                    


- CASE_NOT_FOUND 

    : CASE문의 when절에 해당되는 조건이 없고 else절도 없을 경우 발생


- COLLECTION_IS_NULL 

    : 선언되지 않은 컬렉션(nested table, varray)에 존재하는 메서드 이외의 메서드를 사용했을 때 발생되는 예외.


- CURSOR_ALREADY_OPEN 

    : 이미 열려진 커서를 열려고 시도 했을 때 발생하는 예외


- DUP_VAL_ON_INDEX 

    : 유일인덱스에 중복값을 입력햇을 때 발생하는 예외.


- INVALID_CURSOR 

    : 잘못된 커서 조작이 샐행될 때 발생되는 예외.


- INVALID_NUMBER 

    : 문자를 숫자로의 변환 시 실패가 될 때 발생하는 예외.


- LOGIN_DENIED 

    : 잘못된 사용자명이나 암호로 로그인시도시 발생하는 예외.


- NO_DATA_FOUND 

    : PL/SQL Select문이 한 건도 리턴하지 못하는 경우 발생하는 예외.


- NOT_LOGGED ON 

    : 접속되지 않은 상태에서 데이터베이스에 대한 요청이 PL/SQL 프로그램으로 실행된 경우 발생되는 예외.


- PROGRAM_ERROR 

    : PL/SQL이 내부적인 문제를 가지고 있는 경우 발생되는 예외.


- ROWTYPE_MISMATCH 

    : 할당문에서 호스트 커서 변수와 PL/SQL 커서 변수의 데이터 형이 불일치할 때 발생되는 예외


- STORAGE_ERROR 

    : PL/SQL이 실행될 때 메모리가 부족하거나 메모리상에 문제가 일어났을 대 발생하는 예외.


- SUBSCRIPT_BEYOND_COUNT 

    : 컬렉션의 요소 갯수보다 더 큰 첨자 값으로 참조한 경우 발생


- SUBSCRIPT_OUTSIDE_LIMIT 

    : 컬렉션의 첨자 한계를 벗어난 참조가 일어났을 때 발생


- SYS_INVALID_ROWD 

    : 문자열을 ROWID로 변환할 때 무효한 문자열의 표현일 경우 발생되는 예외.


- TIMEOUT_ON_RESOURCE 

    : 자원에 대한 대기시간이 초과했을 때 발생하는 예외.


- TOO_MANY_ROWS 

    : PL/SQL select문이 두건이상의 행을 리턴햇을 때 발생되는 예외.


- VALUE_ERROR 

    : 산술,변환,절삭 크기 제약에 에러가 생겼을 때 발생되는 예외.


- ZERO_DIVIDE

    : 0으로 나누려 했을 때 발생하는 예외.



Example

PROCEDURE TEST

...

EXCEPTION

WHEN NO_DATA_FOUND THEN

...

WHEN OTHERS THEN

...

...

END TEST;




반응형



Reference: [Oracle|오라클] 여러 행(ROW)을 하나의 컬럼(COLUMN)으로 합치기 (WM_CONCAT)




Query


SELECT COL1, WM_CONCAT(COL2), WM_CONCAT(COL3), COL4

FROM TABLE
WHERE

SOME CONDITION

GROUP BY COL1, COL4



* 검색 결과에서 COL2와 COL3에 의해 각각 나눠진 Row가 하나로 통합되어 나옴.

* 데이터의 구분자는 (,)로 자동 설정됨.





반응형





TestCondition의 값에 따라 where절 조건문 동적 생성.




SELECT ...

FROM ...

WHERE 1=1

<isNotEmpty property="TestCondition" prepend="AND">

<isEqual property="TestCondition" compareValue="A">

--TestCondition의 값이 A일 때 처리

</isEqual>

<isEqual property="TestCondition" compareValue="B">

--TestCondition의 값이 B일 때 처리

</isEqual>

</isNotEmpty>

반응형


References : 외래키 조회





1. Query


SELECT uc.constraint_name, uc.table_name, ucc.column_name, uc.constraint_type, uc.r_constraint_name

FROM user_constraints uc, user_cons_columns ucc

WHERE uc.constraint_name = ucc.constraint_name;




2. Constraint_Type


 - P : Primary Key

 - R : Foreign Key

 - U : Unique

 - C : Not Null, Check




반응형

출처 : 삽질 이제 그만!!: 오라클 where절 Case문



-- *** 사용법 1 *** --

--  CASE 비교대상(값)   

--      WHEN 비교값1 THEN 처리1

--      WHEN 비교값2 THEN 처리2

--      ...

--      ELSE 디폴트 처리

--  END


SELECT 

    * 

FROM 

    tTblName

WHERE

    YYMM =                                  -- 검색할 컬럼명

    CASE

        when '15' = '15' then '201203'      -- 조건

        else '201202'                       -- default 조건

    END

;



-- *** 사용법 2 *** --

--  CASE

--      WHEN 비교조건1 THEN 처리1

--      WHEN 비교조건2 THEN 처리2

--      ...

--      ELSE 디폴트 처리

--  END


SELECT 

    * 

FROM 

    tTblName

WHERE

    YYMM =                                  -- 검색할 컬럼명

    CASE

        when YYMM = '15' then '201203'      -- 조건

        else '201202'                       -- default 조건

    END

;

반응형



1. References


http://www.sysnet.pe.kr/2/0/1709



2. Solution


해당 문제는 여러 원인에 의해 발생하므로 본인의 문제에 의한 해결법을 참조로 걸어두었습니다.


VS는 기본적으로 웹 디버깅시 IIS를 실행하게 되는데 이 IIS는 32bit라고 합니다.


따라서 오라클이 64bit로 설치되는 경우에 이런 문제가 발생하게 됩니다.




디버깅시 실행되는 IIS를 64bit 로 변경하니 문제가 해결되었습니다



VS의 위 메뉴에서 도구->옵션->프로젝트 및 솔루션(환경탭 위에있습니다)->웹 프로젝트 로 가셔서


"웹 사이트 및 프로젝트에 64비트 버전의 IIS Express 사용" 을 체크하시면 됩니다.



반응형


유저의 테이블스페이스 변경.



1. 변경 전 유저의 Default Tablespace 확인


SELECT USERNAME, DEFAULT_TABLESPACE FROM USER_USERS WHERE USERNAME = '[USER_NAME]';



2. Default tablespace 변경.


ALTER USER [USER_NAME] DEFAULT TABLESPACE [TABLESPACE_NAME];



3. 변경 후 유저의 Default Tablespace 확인


SELECT USERNAME, DEFAULT_TABLESPACE FROM USER_USERS WHERE USERNAME = '[USER_NAME]';





테이블의 테이블스페이스 변경



1. Tablespace 내부의 테이블 리스트 확인


SELECT TABLE_NAME, TABLESPACE_NAME

FROM DBA_TABLES

WHERE TABLESPACE_NAME = '[YOUR_TABLESPACE_NAME]';



2. 계정이 소유한 테이블 조회


SELECT TABLE_NAME, TABLESPACE_NAME

FROM DBA_TABLES

WHERE OWNER = '[USER_NAME]';



3. 테이블의 테이블스페이스 변경.


ALTER TABLE [TABLE_NAME] MOVE TABLESPACE [YOUR_TABLESPACE_NAME];





반응형




1. 유저 생성


CREATE USER [USER_NAME] IDENTIFIED BY [USER_PASSWORD];



2. 관리자 권한 부여


GRANT DBA TO [USER_NAME];



3. 생성한 유저 확인


SELECT * FROM ALL_USERS;



4. 유저의 권한 및 롤 확인


SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '[USER_NAME]';

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = '[USER_NAME]';

반응형

Oracle Create Tablespace




1. sysdba 접속


CMD > sqlplus / as sysdba



2. TABLESPACE 생성


CREATE TABLESPACE [YOUR_TABLESPACE_NAME]

DATAFILE '[설치된 오라클 테이블스페이스 경로]/[YOUR_TABLESPACE_NAME].dbf' 

SIZE 100M autoExtend on next 100M;


(기본 사이즈 100MB, 이후 100MB씩 자동증가.)



3. 생성된 TABLESPACE 확인


SELECT TABLESPACE_NAME, BYTES, STATUS 

FROM DBA_DATA_FILES;


반응형


Tablespace 조회 : 오라클에 생성되어있는 테이블 스페이스 조회하기.




1. 쿼리


SELECT TABLESPACE_NAME, BYTES, STATUS

FROM DBA_DATA_FILES;



2. 컬럼


TABLESPACE_NAME : 테이블 스페이스의 이름.

BYTES : 테이블 스페이스의 크기.

STATUS : 테이블 스페이스의 현재 상태 ( 사용가능 여부 )






반응형

+ Recent posts