본문 바로가기

데이타베이스/Oracle26

[PL/SQL] DBMS_OUTPUT 패키지 디버깅을 위해서 상태 값을 확인하거나 결과 값을 확인하는 용도로 데이터를 화면에 표시하기 위해서 사용한다. 화면에 출력하는 건수가 많으면 buffer overflow 에러가 발생할 수 있습니다. 에러는 다음 두가지 방법으로 해결할 수 있다. 출력하고자 하는 행수 이상으로 버퍼 크기를 증가 : DBMS_OUTPUT.ENABLE(행수) 출력에 필요한 버퍼 크기 제한을 없애는 방법 : DBMS_OUTPUT.ENABLE(buffer_size => NULL) DBMS_OUTPUT 패키지는 PUT_LINE, PUT, NEW_LINE 3가지 프로시저를 제공한다. PUT_LINE : 문자열을 출력한 후 다음 라인으로 이동 PUT : 문자열을 출력한 후 대기 NEW_LINE : 다음 라인으로 이동 2022. 1. 10.
[Oracle] ORA-01460: 요구된 변환은 실행될 수 없습니다 SQL Developer 4.1.2 버전으로 업그레이드 하고 나서 아래 프로시져나 함수 목록을 보려고 하면 아래 오류가 납니다. [Oracle] ORA-01460: 요구된 변환은 실행될 수 없습니다 이유는SQL Developer 4.1.2 버전에서는 오라클 9i를 지원하지 못해서 생기는 문제네요. 그냥 이전에 잘 쓰던 버전으로 버전 다운시켜서 다시 사용하고 있습니다 ㅡㅡ; 2016. 7. 7.
현재날짜 기준 토요일, 일요일을 뺀 날짜 목록 얻기 현재 날짜 기준으로 7일 이내의 날짜 중에서 토요일, 일요일을 뺀 날짜 목록 생성하는 SQL 문 입니다. SELECT A.YMDFROM ( SELECT TO_CHAR(SYSDATE + (LEVEL-1), 'YYYYMMDD') AS YMD, TO_CHAR(SYSDATE + (LEVEL-1), 'd') WK FROM DUAL CONNECT BY LEVEL 2015. 11. 6.
ORA-30926 : 원본 테이블의 고정 행 집합을 가져올 수 없습니다. 오라클에서 MERGE INTO 문을 이용해서 작업을 하다 보면 다음과 같은 오류가 발생할 때가 있습니다. ORA-30926 : 원본 테이블의 고정 행 집합을 가져올 수 없습니다. 원인은 대상이 되는 두 테이블을 조인하는 과정에서 동일한 키 값을 갖는 레코드가 2개 이상 존재하는 경우 발생한다고 합니다. 물론, 대상 테이블에서 키 필드가 중복되는 레코드를 찾아서 제거하거나 중복이 되지 않도록 조정하면 해결 됩니다. 2015. 11. 5.
ORA-01722 : 수치가 부적합합니다. 엑셀자료를 SQL Developer를 이용해서 Import 시에 다음과 같은 오류가 발생했습니다. ORA-01722 : 수치가 부적합합니다. 원인을 찾아보니 엑셀의 셀 상에 숫자가 10000 인데 이것을 SQL Developer에서 임포트하기 위해서 해석하는 과정에 10000.0 으로 인식을 하네요. 문제는 해당 값이 들어갈 필드의 타입을 Number(11)로 되어 있다보니 소수점에 대한 처리를 할 수가 없어서 오류가 나는 것이었습니다. 즉, SQL Developer가 인식하는 포맷에 맞게 필드의 타입을 선언해 주어야 문제가 없드라구요. 해결 방법은 해당 필드의 타입을 Number(11,1)로 변경해서 처리했습니다. 2015. 10. 30.
외부에서 IP공유기로 연결된 망에 설치된 Oracle 9i 에 접속하기 일반적으로 IP공유기 망 안에 있는 PC에 접속하기를 원할 때, 공유기에서 해당 PC로 포트포워딩을 해주면 됩니다.하지만, 오라클은 이 것 만으로는 외부에서 접속할 수가 없습니다. 아래 설명대로 따라 하시면 외부에서 접속을 할 수 있습니다. 1. 공유기에서 포트포워딩을 Oracle 9i가 설치된 PC로 설정한다. 2. Oracle 9i가 설치된 PC의 레지스트리에 다음 값을 설정한다. \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 에 USE_SHARED_SOCKET = TRUE 를 설정 3. PC를 재시작 한다. 2015. 10. 23.
키워드를 칼럼명으로 사용하기 테이블 생성시에 예약어를 컬럼명으로 사용하거나 조회시에 예약어를 알리아스로 하고 싶을 때는 해당 컬럼명이나 알리아스를 더블쿼테이션(")을 이용해서 깜싸준다. CREATE TABLE TEST("LEVEL" number); SELECT 1 AS "LEVEL" FROM DUAL; * 예약어를 더블쿼테이션을 이용해서 감싸면 대소문자를 구분하게 됩니다. 사용시 대소문자를 구분해서 사용해야 합니다. 2014. 6. 19.