본문 바로가기
728x90
반응형

study_db25

오라클 반복문 for문 작성 (+ DBMS_OUTPUT 출력안됨) 오라클 for 반복문 작성해보기.DBMS_OUTPUT.PUT_LINE() 사용했는데 오라클 스크립트 출력창에 안나온다면 출력모드를 on 해준당 예제 쿼리/* 출력 모드 on */SET SERVEROUTPUT ON; /* 변수 정의 */DECLARE NUM1 NUMBER :=1;TODAYS_DATE DATE := SYSDATE;/* 함수 시작 */BEGIN DBMS_OUTPUT.PUT_LINE('안녕하세요. 오늘 날짜는..' || TO_CHAR(TODAYS_DATE, 'YYYY.MM.DD')); --출력 /* 반복문 */ FOR I IN 1..5 LOOP SELECT SYSDATE + NUM1 INTO TODAYS_DATE FROM DUAL; DBMS_OUTPUT.PUT_.. 2024. 6. 18.
오라클 시퀀스 ↔ 테이블 시퀀스 맞추기 (동기화하기) 간혹 데이터를 이관하다보면, 해당 테이블의 pk 로 사용하는 시퀀스와, 거기에 사용되는 시퀀스의 value가 맞지 않을 때가 있다. 나는 무결성 제약위반 오류가 뜨면서 데이터가 수정처리 되지 않았기 때문에, 시퀀스를 맞춰주어야 하는 상황이었다 또 이런 상황이 생길 수도 있으니 간단한 프로시저로 만들어보았다 create or replace PROCEDURE "SYNC_SEQ" ( P_SQ_NM in VARCHAR2-- 시퀀스명 , P_TB_SEQ_NM in VARCHAR2 -- 테이블 내 시퀀스 컬럼명 , P_TB_NM in VARCHAR2 -- 테이블명 ) IS V_NEXT_VALUE NUMBER; V_MAX_VALUE NUMBER; V_CAL_VALUE NUMBER; T_NUM N.. 2024. 2. 20.
오라클 엑셀 익스포트 시 줄바꿈 오류 #오라클 엑셀 익스포트 시 줄바꿈 오류 오라클에서 select 한 결과를 익스포트 할 때, 간혹 줄바꿈이 지 멋대로 되어서 저장되어 있는 경우가 있다. 아래와 같이 저장이 되어서 곤혹스러웠다. .. 1. 이슈 select 결과로는 정상적으로 보이지만, 막상 엑셀파일로 옮겨보면 줄바꿈 난리남 2. 해결 문득 보이는 인코딩 설정값.. 기본으로 설정되어 있는 ms949. 요녀석을 utf-8로 바꿨더니 정상적으로 저장이 되었다. 해결 🍻 아마 apachi poi 의 인코딩 문제와 관계가 있을 것 같다. 더 확인해보고 내용 추가해야겠다. 2023. 12. 13.
오라클 SELECT 결과 엑셀로 내보내기 ( 엑셀 저장 / 익스포트 기능 ) # 오라클 SELECT 결과 엑셀로 저장하기 종종 로우 데이터를 뽑아야 할 때가 있다. 그걸 엑셀로 전달해야 하는데 엑셀을 열어서 하나하나 헤드을 작성하고.. select 결과를 ctrl+c crtl+v ..!!!! 할 수도 있지만 오라클에서 제공하는 더 쉬운 기능이 있당 이름하야 익스포트 기능 1. select 쿼리 실행 후 > 질의 결과 우클릭 > 익스포트 선택 2. 익스포트 마법사 - 설정값 수정 익스포트를 선택하면 익스포트 마법사 창이 뜬다. 형식을 excel 확장자를 가진 놈으로 선택 해 준다. xls는 옛날버전이니 xlsx로 선택 형식을 바꿔주면 그에 맞게 하단 설정값도 변경된다. 헤더 : 체크하면 필드명까지 같이 추출해준다. 데이터 워크시트 이름 : 데이터가 포함될 시트(sheet)의 이름 .. 2023. 12. 13.
오라클 뷰를 이용한 DB 세션 죽이기 (V$SESSION, V$SQL, V$SQLAREA) 특정 세션이 오래걸리면서 뒤따른 세션들이 주루룩 물려 병목현상 발생.. 그래서 해당 세션을 db에서 잘라내야 했다. 1 현재 계속 수행중인 세션의 id를 찾아, 2 해당 세션id를 가지고 있는 세션을 kill 해야 했다. 1. 계속 수행중인 세션 id 찾기 우선, db 접속이 발생하면 세션이 생성되어 고유 id와 serial number을 가진다. 이에 대한 기본적인 정보는 v$session 뷰에 위치한다. 오라클은 데이터베이스 접속이 이루어지면 세션을 시작한다. 세션은 사용자가 데이터베이스에 연결되어 있는 동안 계속 유지된다. 세션이 시작되면 오라클은 해당 세션에 세션 ID(SID)를 할당한다. v$session에서 각 세션은 고유한 SID(Session identifier)와 SERIAL#(seria.. 2023. 12. 9.
오라클 PRAGMA AUTONOMOUS_TRANSACTION, 자율 트랜잭션 지정하기 오라클 PRAGMA AUTONOMOUS_TRANSACTION, 자율 트랜잭션 지정하기 프로시저 내에서 다른 프로시저를 호출하면 같은 트랜잭션에 묶이므로, 독립된 트랜잭션을 가지도록 하고 싶은 경우 사용한다. PRAGMA 키워드의 AUTONOMOUS_TRANSACTION 옵션을 통해 자율트랜잭션임을 선언해준다. create or replace FUNCTION FN_TEST ( p_paramSeq in NUMBER ) AS PRAGMA AUTONOMOUS_TRANSACTION; 이렇게 해당 프로시저를 자율트랜잭션으로 만들어주면, 부모 트랜잭션의 락(lock),리소스(resource), 커밋(commit)에 관련된 의존성을 가지지 않는다. 즉, 부모의 커밋 / 롤백 여부에 상관 없이 자신의 작업을 커밋 하거나.. 2023. 12. 7.
오라클 함수 생성하기 create or replace FUNCTION 오라클 함수 생성하기 구조 ① CREATE만 작성 시, 함수 수정해서 저장은 되지만 컴파일이 완료되지 않음. 컴파일됨(오류 발생) ② [ ] -> 생략가능. DEFAULT 는 값을 넣지 않았을 의 기본 값이 된다 ③ 결과값이 하나는 있어야 하므로 지정해준다. 지정 하지 않을 경우 발생하는 오류 : •오류(6,1): PLS-00103: 심볼 "AS"를 만났습니다 다음 중 하나가 기대될 때: return ④ 지역변수는 BEGIN 내의 실행할 쿼리문에서 사용될 변수. 결과변수는 함수 호출한 결과를 저장할 결과변수. ⑤ 실행할 쿼리문은 자유롭게 작성가능하나 INTO 로 결과변수에 결과값을 세팅해주어야 한다. •오류(8,3): PLS-00428: 해당 SELECT 문에 INTO 절이 필요합니다. ⑥ 결과변수 없이.. 2023. 12. 7.
오라클 랜덤 정수 or 랜덤 문자열 가져오기 1. 랜덤 정수 가져오기 DBMS_RANDOM.VALUE(시작수, 종료수) SELECT SYS.DBMS_RANDOM.VALUE(0,10) AS RN FROM DUAL; 그런데 소수점을 곁들인.. 그래서 TRUNC 함수로 소수점 삭제시켜준다. SELECT TRUNC(SYS.DBMS_RANDOM.VALUE(0,10)) AS RN FROM DUAL; 2. 랜덤 문자 가져오기 DBMS_RANDOM.STRING(옵션값, 자릿수) SELECT SYS.DBMS_RANDOM.STRING('A',10) AS RS FROM DUAL; 랜덤 영어 문자열을 대소문자 섞어서 10자리로 가져온다. 옵션은 아래와 같다. 옵션값 설명 A, a 대소문자 구분없는 모든 알파벳 L, l 소문자 알파벳 U, u 대문자 알파벳 P, p 특수.. 2023. 11. 10.
오라클 LPAD, RPAD 함수 : 공백 채우기 메뉴코드나, 자격증 코드를 구성할 때 코드명 || 시퀀스 형태로 붙여서 사용하는 방법도 있겠지만, 뒤로 길어지는 게 아닌, 자릿수는 지키면서 숫자만 올라가는 것을 원할 경우 LPAD. 또는 RPAD 함수를 사용할 수 있다. 개인적으로는 LPAD가 메뉴코드 / 자격증 코드를 구성하기에 적합한 것 같다. 사용법 SELECT LPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; SELECT RPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; LPAD , RPAD 는 시작점 위치가 왼쪽이냐 오른쪽이냐의 차이이다. 설명 SELECT LPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; 첫번째 데이터를 기준으로, 총 자릿 수 중 왼쪽으로 남은 .. 2023. 9. 15.
오라클 INSTR 함수 : 텍스트 인덱스 가져오기, (indexOf) 데이터를 가져올 때 쪼개서 가져오고 싶을 때가 있다. 그럴 때 사용할 수 있는 함수가 INSTR() 이다. 사용법 SELECT INSTR([데이터], [찾을 데이터], [찾기 시작할 위치], [찾을 데이터의 순번]) FROM TABLE; 1) 파라미터 2개 사용 시 SELECT INSTR('ORACLE TEST CODE', 'E') FROM DUAL; 텍스트 'ORACLE TEST CODE' 중, 'E'가 처음으로 위치한 순서를 가져온다. (result : 6) 앞에서부터 순서를 세고 인덱스 위치를 가져온다기보다는 순서를 가져오기 때문에, 리턴 숫자는 0, 1, 2..로 진행되는 게 아니라 1, 2, 3..으로 진행된다 2) 파라미터 3개 사용 시 SELECT INSTR('ORACLE TEST CODE'.. 2023. 9. 15.
728x90
반응형