SQL 삽입 문 반환 "0/무개 행 삽입"
나는 글을 씁니다.INSERTPL/SQL 블록의 테이블에 하나의 행을 삽입하는 문장.이 삽입이 실패하거나 행이 삽입되지 않으면 이전에 실행한 업데이트 문을 롤백해야 합니다.
나는 어떤 상황에서 그들이INSERT문장에 0개의 행을 삽입할 수 있습니다.어떤 예외로 인해 삽입이 실패할 경우 예외 블록에서 처리할 수 있습니다.다음과 같은 경우가 있습니까?INSERT성공적으로 실행될 수도 있지만 다음을 확인해야 하는 예외가 발생하지는 않습니다.SQL%ROWCOUNT < 1?
당신의INSERT문장이 구조화되어 있습니다.INSERT ... VALUES, 그러면 정확히 하나의 행을 성공적으로 삽입하거나 예외를 생성합니다.확인할 필요가 없을 것입니다.SQL%ROWCOUNT.
당신의INSERT문장이 구조화되어 있습니다.INSERT ... SELECT, 그러면 가능합니다.SELECT문장은 0 행을 반환합니다.INSERTstatement는 0개의 행을 삽입하고 예외는 던지지 않습니다.만약 당신이 그것을 오류라고 생각한다면, 당신은 확인할 필요가 있을 것입니다.SQL%ROWCOUNT후에INSERT문이 실행됩니다.
예, DML 문(INSERT, UPDATES 등)의 영향을 받는 행 수를 확인하려면 다음 값을 확인할 수 있습니다.SQL%ROWCOUNT
INSERT INTO TABLE
SELECT col1, col2,....
FROM TAB;
if SQL%ROWCOUNT=0 then
RAISE_APPLICATION_ERROR(-20101, 'No records inserted');
end if;
위의 설명 중 하나를 완료하는 방법:
요청하시는 경우에는
INSERT INTO ... VALUES힌트가 없는 DML 문, 실제로 시스템은 성공 시 생성된 1개의 행을 반환하거나 실패 시 ORA 오류를 반환합니다.그러나 당신이 요구한다면
INSERT INTO ... VALUES힌트가 있는 DML 문: IGNORGE_ROW_ON_DUPE_KEY, 행이 이미 존재할 경우 1개의 행이 생성되거나 0개의 행이 생성되고 다른 장애가 발생할 경우 ORA 오류가 생성됩니다.당신이 요청하는 경우에는
INSERT ... SELECTJustin이 위에서 언급한 바와 같이 SELECT에 대한 내부 호출이 실제로 반환될 수 있으므로 0개의 행이 생성될 것으로 예상할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/11877121/sql-insert-statement-return-zero-no-rows-inserted
'programing' 카테고리의 다른 글
| 신용카드 번호를 세션에 저장하는 것 - 그 주변의 방법? (0) | 2023.09.19 |
|---|---|
| 페이지에서 연락처 양식 7 쇼트코드를 사용하지 않는 한 연락처 양식 7 CSS 및 JS 제거 (0) | 2023.09.19 |
| 부트스트랩 3과 함께 부트스트랩-테마.css를 사용하는 방법? (0) | 2023.09.14 |
| 워드프레스 기능에 코드를 적용하는 것.단 하나의 카테고리로 php. (0) | 2023.09.14 |
| Oracle 업데이트 및 반환 값 (0) | 2023.09.14 |