본문 바로가기

Oracle7

[Oracle] PL/SQL 프로시저 예외처리하기 (with RAISE & EXCEPTION) 프로시저를 작성하면서 특정 상황에는 A 처리를, 다른 상황에서는 B 처리를 해줘야할 때가 있다. 예를 들어,전표를 생성한다고 할 때 월마감을 체크하고 전표를 생성시켜줘야한다월마감을 했는지 체크하고 그 결과에 따라 월마감 여부를 알려주거나 전표를 생성시키거나 해야한다.이런 경우, 사용자정의 예외를 사용해서 처리해줄 수 있다. 물론 사용자정의 예외만 처리할 수 있는 방법이 아니라 자바에 try-catch문 처럼컴파일 오류나 오라클에서 발생시키는 오류 또한 처리할 수 있다. 프로시저에서EXCEPTION으로 예외를 선언하고 처리하고 RAISE로 예외를 발생시킬 수 있다. CREATE OR REPLACE PROCEDURE 프로시저이름ISV_CNT NUMBER(20);V_PRICE NUMBER(2.. 2025. 4. 16.
[Oracle] ORA-00913: too many values INSERT - SELECT문을 실행하다가 에러 발생🫨🫨 ORA-00913: too many values (값이 너무 많습니다.) 해당 오류가 발생하는 경우는  INSERT문을 수행할 때 VALUES 절에 나열한 열 개수보다 많은 값을 입력할 때 주로 발생한다. INSERT INTO USER (ID, NAME, PWD)VALUES ('id', 'name', 'pwd', 'hh') 이처럼 데이터를 입력하려는 컬럼 수보다  삽입하려는 값이 많을 때 발생한다. 해결하는 방법은 👉👉👉  간단하게 컬럼수만 동일하게 맞춰주면 된다!INSERT INTO USER (ID, NAME, PWD)VALUES ('id', 'name', 'pwd')   추가적으로 INSERT때 뿐 아니라WHERE 절의 하위 쿼.. 2025. 2. 25.
[Oracle] USER_SOURCE - 프로시저, 함수 등 내용 조회하기 테이블을 수정하거나 프로시저, 함수를 수정하기에 앞서 다른 곳에서 사용되는지 확인이 필요하다!혹은 어떤 테이블이, 어떤 컬럼이 어떤 함수, 프로시저, 패키지 등에서 사용되었는지 찾아봐야할 때가 있다. 하나하나 다 찾아봐야하는건가...?! 했지만!간단하게 조회해볼 수 있는 방법이 있다😏 바로 USER_SOURCE 테이블을 사용하는 것이다!✏️ USER_SOURCE : 현재 사용자가 소유한 저장된 프로그램의 소스 정보를 담고 있는 뷰이다.NAME : 프로그램 객체명TYPE : 프로그램 타입LINE : 프로그램 소스 코드 라인 번호TEXT : 프로그램 소스 코드 USER_SOURCE의 TEXT 컬럼이 소스코드를 담고있는 컬럼이기 때문에TEXT 컬럼을 사용해서 조회하면 된다!SELECT * FROM USE.. 2025. 2. 19.
[Oracle] UNION과 UNION ALL 차이 ✏️ UNION / UNION ALL 여러 개의 SELECT문 결과를 하나의 결과로 합쳐주는 집합 연산 두 연산의 차이는 중복 제거! • UNION => 중복 제거 • UNION ALL => 중복 제거 X 중복 제거가 필요한 것이 아니라면 UNION 보다는 UNION ALL을 사용하는 것이 좋다.UNION 은 중복 제거라는 단계가 한번 더 들어가기 때문에 속도와 부하에서 안좋아... UNION과 UNION ALL을 사용할 때는컬럼의 개수, 데이터 타입, 순서가 동일해야한다. 이 항목들이 동일하지 않은 경우 아래와 같은 문제들이 발생한다. 1. 컬럼의 개수가 일치하지 않는 경우ORA-01789: 질의 블록은 부정확한 수의 결과 열을 가지고 있습니다.. 2025. 2. 12.