반응형
PL/SQL ORA-01422: 정확한 가져오기가 요청된 행 수보다 많은 행을 반환합니다.
이 오류가 계속 발생하는데 뭐가 문제인지 알 수 없어요.
선언하다
*
1행 오류:
ORA-01422: exact fetch가 요청된 행 수보다 많은 행을 반환합니다.
ORA-06512: 회선 11
여기 제 코드가 있습니다.
DECLARE
rec_ENAME EMPLOYEE.ENAME%TYPE;
rec_JOB EMPLOYEE.DESIGNATION%TYPE;
rec_SAL EMPLOYEE.SALARY%TYPE;
rec_DEP DEPARTMENT.DEPT_NAME%TYPE;
BEGIN
SELECT EMPLOYEE.EMPID, EMPLOYEE.ENAME, EMPLOYEE.DESIGNATION, EMPLOYEE.SALARY, DEPARTMENT.DEPT_NAME
INTO rec_EMPID, rec_ENAME, rec_JOB, rec_SAL, rec_DEP
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.SALARY > 3000;
DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec_EMPID);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec_ENAME);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec_JOB);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec_SAL);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec_DEP);
END;
/
A SELECT INTO
statement는 1행 이외의 값을 반환할 경우 오류를 발생시킵니다.0 행이 반환되는 경우,no_data_found
예외.1개 이상의 행이 반환되는 경우,too_many_rows
예외.3000 이상의 급여를 받는 직원이 항상 정확히 한 명 있을 것이라는 것을 알지 않는 한, 당신은 그것을 원하지 않는다.SELECT INTO
여기에 기재해 주세요.
대부분의 경우 커서를 사용하여 (잠재적으로) 여러 데이터 행에 걸쳐 반복할 필요가 있습니다(또한 데카르트 제품을 사용하는 것이 아니라 두 테이블 간에 적절한 결합을 수행하려고 의도한 것으로 생각됩니다.따라서 다음과 같은 데이터가 있다고 가정합니다.departmentID
두 표의 열)
BEGIN
FOR rec IN (SELECT EMPLOYEE.EMPID,
EMPLOYEE.ENAME,
EMPLOYEE.DESIGNATION,
EMPLOYEE.SALARY,
DEPARTMENT.DEPT_NAME
FROM EMPLOYEE,
DEPARTMENT
WHERE employee.departmentID = department.departmentID
AND EMPLOYEE.SALARY > 3000)
LOOP
DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec.EMPID);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec.ENAME);
DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec.DESIGNATION);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec.SALARY);
DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec.DEPT_NAME);
END LOOP;
END;
당신도 PL/SQL을 배우고 있을 거라고 생각합니다.실제 코드에서, 당신은 절대로dbms_output
이렇게 해서 당신이 쓴 데이터를 다른 사람이 보는 것에 의존하지 않을 것입니다.dbms_output
버퍼링합니다.
언급URL : https://stackoverflow.com/questions/19779483/pl-sql-ora-01422-exact-fetch-returns-more-than-requested-number-of-rows
반응형
'programing' 카테고리의 다른 글
Mongo DB에 저장과 삽입의 차이점은 무엇입니까? (0) | 2023.03.21 |
---|---|
Spring JPA를 사용하여 엔티티의 선택된 속성만 가져오려면 어떻게 해야 합니까? (0) | 2023.03.21 |
컨트롤러를 글로벌하게 정의하면서 컨트롤러가 함수가 아니라 정의되지 않았습니다. (0) | 2023.03.21 |
Oracle 데이터베이스에서 장시간 실행 중인 쿼리를 확인하는 방법 (0) | 2023.03.21 |
어떤 걸로 할까요?org.json의 JSONObject VS javax.json의 JsonObject (0) | 2023.03.21 |