뎁스노트 / 데이터베이스 / Oracle

데이터베이스

뎁스_2862뎁스_2862· 3년전

질문sql 채번에 대해서 질문이있습니다

공부중인 생초보입니다.. 일단 제가 사용하고 있는건 oracle이고 mybatis형식으로 하려합니다 제목대로 채번쿼리에 대해서인데요 일단 컬럼이 예를들어 Pk1 varchar2 Pk2 varchar2 Name1 varchar2 이 있습니다 데이터는 대강  ‘2023000001’ ‘000001’ ‘분류1’ 이라는 데이터가 각각 들어있다고 치고 데이터베이스에 name1이 중복존재하는게 있으면  Pk1이 그대로 2023000001이 유지가 되고 중복이 아닌 새로운 명칭이 들어오면 신규채번이 되도록 짜려고 합니다
637
1
0
윈비
윈비·2024-03-28
Oracle에서 MyBatis를 사용하여 특정 조건에 따라 채번(시퀀스 생성) 로직을 구현하고 싶으신 것으로 이해했습니다. 주어진 조건은 Name1 컬럼의 값이 중복되는지 여부에 따라 Pk1의 값이 변경되거나 유지되어야 한다는 것입니다. 즉, Name1 값이 기존에 데이터베이스에 존재한다면 Pk1은 동일한 값을 유지하고, 새로운 Name1 값이면 Pk1...
디베이디베이· 6년전

오라클 21c JSON 데이터 타입 지원

create table person_collection (id number primary key, jdoc JSON); insert into person_collection values(1,'{"person":{"birthdate":"1998-03-04", "creditscore":[700, 650, 720]}}' ); commit;  
2.2K
0
uutopiauutopia· 6년전

질문오라클에서 테이블이 없으면 CREATE 있으면 ALTER 하는 방법

개발자이긴 한데 오라클에 대한 지식이 좀 부족합니다. 고객사에 전달할 자회사 패키지의 DB 생성 Script를 작성중인데 고객사의 현재 테이블 상황이 어떤지 알 수가 없습니다. 우리테이블이 이미 존재할 수도 있고 존재하지 않을 수도 있습니다. 존재할 경우 테이블을 ALTER해야 하고 존재하지 않을 경우 CREATE 해야 합니다. 이걸 하나의 Script로 만드는 방법이 있을까요?   즉, Script를 DB툴에서 실행 시 테이블이 존재하지 않으면 CREATE문을 실행해서 테이블을 생성하고, 이미 존재하면 ALTER를 실행해서 테이블의 구조를 바꾸는 쿼리를 만들 수 있나요? 하나의 쿼리로 만들어 지면 제일 좋겠지만 불가능 하다면 PL/SQL을 써서 IF문을 쓰거나 다양한 방법으로 시도 가능합니다.
3.1K
2
0
kimho
kimho·2020-09-07
원하시는 해결을 위해 많은 상용 데이터베이스에서는 CRAETE OR REPLABE TABLE 이라는 구문을 제공하지만 오라클에서는 테이블에 대하여 CREATE OR REPLACE 구문을 제공하지 않습니다.   따라서 PL/SQL 등을 이용하여 별도로 작성해야 할 것 같습니다. 참고로 아래는 테이블 칼럼 존재 여부를 판단해서 칼럼을 추가하는 ...
끼뤼끼뤼· 7년전

질문오라클 expdp/impdp 사용시 중복 캐릭터셋 에러

오라클 11g에서 오라클 19c로 shcama 혹은 db를 이전시키려 합니다 (둘다 리눅스 서버). expdp 커맨드를 통해 11g의 dump를 받으려고 하는데 아래와 같은 에러가 발생합니다. Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORA-39006: internal error ORA-39065: unexpected master process exception in DISPATCH ORA-00600: internal error code, arguments: [kokle_lob2lob13:input mismatch], [1], [], [], [], [], [], [], [], [], [], [] ORA-39097: Data Pump job encountered unexpected error -600   인터넷에 검색해보니 중복된 캐릭터 셋이 원인이 될 수 있다는 글을 발견해 아래의 코드를 구동시켜 캐릭터 셋을 확인했습니다.   select distinct(nls_charset_name(charsetid)) CHARACTERSET, decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'), 9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'), 96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'), 112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112) order by types_used_in; 그 결과 11g에서 아래의 값을 얻었습니다. CHARACTERSET  TYPES_USED_IN US7ASCII CHAR UTF8 CHAR US7ASCII CLOB AL16UTF16 NCHAR AL16UTF16 NCLOB AL16UTF16 NVARCHAR2 US7ASCII VARCHAR2 UTF8 VARCHAR2   1. 여기서 11g 캐릭터 셋에 어떤 조치를 취해줘야 할까요? 2. 19c로 복원시에 문제가 없으려면 캐릭터셋에 대하여 고려해줘야 할 부분이 있을까요?   조언 부탁드립니다.  
2.8K
0