DataBase
-
ORA-00932: 일관성 없는 데이터 유형: -이(가) 필요하지만 CLOB임 - 에러 해결DataBase/Oracle 2018. 9. 13. 11:40
12SELECT DISTINCT SOME_SEQ(NUMBER형 컬럼), SOME_CLOB(CLOB형 컬럼) FROM DEMO_TABLEColored by Color Scriptercs 이와 유사하게 DISTINCT 기능을 사용하려다 발생한 에러. DISTINCT를 사용할 때 CLOB형 컬럼이 있으면 원하는 기능이 실행되지 않는다. DISTINCT를 사용하고 싶다면 CLOB형 컬럼은 제외하고 사용해야 한다. 방법은 스택오버플로우를 참고했다. click 1234567SELECT a.* , b.SOME_CLOB FROM (SELECT DISTINCT SOME_SEQ FROM DEMO_TABLE) aINNER JOIN DEMO_TABLE b ON a.pk = b.pk Colored by Color Scripte..
-
[oracle] 오라클에서 System.out.print()?! 프린트 하는 법DataBase/Oracle 2018. 9. 4. 20:17
프로시저를 만들 일이 거의 없어서 지식이 깊지 않다. 그래서 난 프로시저에서 print를 할 수 있다는 것도!! try, catch문처럼 exception처리가 가능하다는 것도 모르고 있었다!!! '오늘도 한 수 배워갑니다.' 모르고 있었던 개념이라 프로시저에서 값을 찍어 볼 수 있다는 것에 대해 굉장히! 놀랐다. 바보같은 모자란 나... function이나 procedure에서 값을 찍으려면 아래와 같이 사용하면 된다. 먼저, SQL창에서 옵션을 켠다. 1SET SERVEROUTPUT ON FORMAT WRAP -- 프린트를 찍기 위해 옵션 온cs 다음 function 안에서 어떻게 선언해야 보이냐하면, 123456789101112131415CREATE OR REPLACE FUNCTION MAKE_CH..
-
[Oracle] 오라클 CLOB형 LENGTH(길이) 구하기, SUBSTR(문자열 자르기) 하는 방법DataBase/Oracle 2018. 9. 4. 18:02
오라클에서 CLOB을 VARCHAR2와 같은 함수를 쓰면 에러가 발생한다. CLOB형태의 컬럼 데이터를 길이를 구하고, 문자열을 자르려면 DBMS_LOB.GETLENGTH, DBMS_LOB.SUBSTR을 사용하면 된다. 아래처럼 사용하면 된다. 컬럼은 CLOB형이어야한다. 12345SELECT DBMS_LOB.SUBSTR(CLOB형 컬럼명, 자를 문자열 길이, OFFSET) AS "SUBSTR_DATA_COLUMN" -- 문자열 자르기 DBMS_LOB.GETLENGTH(CLOB형 컬럼명) AS "COLUMN_DATA_LENGTH" , -- 문자열 FROM ZORBA_EMPLOYEE Colored by Color Scriptercs 응용하면 아래처럼 사용할 수 있다. 첫번째는 문자열을 잘라서 마지막 1 글..
-
[Oracle] 프로시저(procedure), function에서 예외(exception)처리DataBase/Oracle 2018. 9. 4. 11:24
exception 처리에 대해 글을 쓸 거지만 오늘 있었던 일에 비추어 한 가지만 포스팅 하려고 한다. oracle에서 function을 만들던 도중, 원하는 값이 나오지 않고 계속해서 Null 값이 떨어졌다. function 안에 transaction이 실행 되는 지점 마다 print를 하나하나씩 찍어보다보니 원인 지점을 찾았다. 오늘 배운 것이지만, 프로시저 실행 중에 SELECT INTO를 사용하는 로직에서 Null값을 받아오고 INTO에 아무 값도 들어가지 않으면 exception이 발생한다. function이 exception을 던진다는 것도 오늘 알았다. (갈 길이 멀다 나란 초보 ㅠ_ㅠ) 그런 결과로 function이 끝까지 타지 않고 중간에 exception을 날려버려 멈춰버리는 것이다. ..
-
[Oracle,MySQL] mybatis foreach문을 이용해 다중 insert 하는 법DataBase/Oracle 2018. 8. 31. 17:12
Mysql과 oracle에서 다중 insert가 어떻게 다른지 비교하면서 설명할 생각이다. 먼저, MySQL에서 foreach로 다중 insert 사용 방법이다. 12345678910111213141516INSERT INTO choco_table ( number_id , public_id , div , create_date , create_id ) VALUES ( #{item.number_id} , #{item.public_id} , #{item.div} , NOW() , #{item.create_id} ) Colored by Color Scriptercs 구분자가 콤마(,)로 구분된다. 값이 들어갈 부분 VALUES 이후부터 foreach를 걸어주면 된다. 반면 오라클은 사용 방법은 위와 같이 하면 에..
-
[Oracle] sql developer에서 'oracle에 복사' '확인' 버튼이 보이지 않을 때 해결방법DataBase/Oracle 2018. 8. 31. 11:57
2~3일 동안 날 짜증나게 했던... 이것은 오라클의 버그.(사실 포기한 상태였다 구글링해도 잘 안 나오고) '확인'버튼이 안보이는 것이었다!!!!! 끄아아아아아 진짜 스트레스. 왜 없냐 어디갔냐.... 주임님도 같이 찾아주다가 찾아주신 해결방법!(오라클 커뮤니티에 접속해서 직접 copy to oracle로 검색하셨다고 했다.구글이라고 다 찾아주는 건 아닌가보다) 출처: https://community.oracle.com/message/9829203#9829203 다이어로그 사이즈를 조정해보니 '확인'버튼이 나왔다??? 너무 허무했다. 정말 아주 진짜 허무했다. 이런 버그를 왜 아직 안 고치고 있는거지? 2011년 게시물인데!? ㅠ_ㅠ 해결방법: 창의 크기를 조정해주면 보인다. 완전 허무 ㅠㅠ