보기 전시 1은 직원 테이블의 구조 조사 :덤프에서이 문제에 대해 도움을 줄 수 있습니까?
desc employees
Name Null Type
-------------------------------------------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL CHAR(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
보기 전시 2 및 코드 검사 :
CREATE OR REPLACE FUNCTION increase
(emp_num NUMBER) RETURN NUMBER
IS
inc_amt NUMBER;
sal NUMBER;
BEGIN
SELECT salary INTO sal FROM employees WHERE employee_id = emp_num;
inc_amt := sal*10;
RETURN inc_amt;
END increase;
/
CREATE OR REPLACE PROCEDURE calc_sal IS
emp_num NUMBER(7) := 120;
amt NUMBER :=0;
PROCEDURE raise_salary
(emp_id NUMBER)
IS
BEGIN
amt := increase(emp_num);
UPDATE employees SET salary = salary+amt WHERE employee_id=emp_id;
END raise_salary;
BEGIN
raise_salary(emp_num);
END calc_sal;
/
코드가 실행될 때 결과가 무엇입니까?
A. 두 블록이 호출되면 컴파일되고 성공적으로 실행됩니다.
B. 두 블록이 성공적으로 컴파일되지만 CALC_SAL 프로 시저가 실행시 오류를 발생시킵니다.
C. amt 변수가 RAISE_SALARY 프로 시저에서 선언되어야하기 때문에 CALC_SAL 프로 시저가 컴파일시 오류를 제공합니다.
D. RAISE_SALARY 프로 시저가 독립형 증가 함수를 호출 할 수 없기 때문에 CALC_SAL 프로시 저는 컴파일시 오류를 제공합니다.
함수와 프로 시저를 컴파일하고 sucssfully 컴파일했기 때문에 B를 선택했으나 calc_sal 프로 시저를 호출하여 오류가 발생했습니다.
당신은 나에게이 오류의 원인을 설명 할 수 있습니까? 내 대답은 맞거나 틀렸습니까? 에서 덤프 때문에 대답은
내가이 코드와 프로 시저를 호출했다 :
begin
calc_sal;
end;
및 오류 내가 얻을 :
Error report:
ORA-01438: value larger than specified precision allowed for this column
ORA-06512: at "HR.CALC_SAL", line 7
ORA-06512: at "HR.CALC_SAL", line 11
ORA-06512: at line 2
01438. 00000 - "value larger than specified precision allowed for this column"
*Cause: When inserting or updating records, a numeric value was entered
that exceeded the precision defined for the column.
*Action: Enter a value that complies with the numeric column's precision,
or use the MODIFY option with the ALTER TABLE command to expand
the precision.
및 employee_id입니다 열 (107) 직원 100에서 자신의 번호가
@ Bob Jarvis 할 수 있습니다. 기꺼이 설명해주십시오.이 질문을 –
발생시키는 오류는 무엇입니까? –
그리고 게시물을 편집하고 작성한 코드를 포함시켜 CALC_SAL을 호출하십시오. 그리고 EMPLOYEES 테이블의 EMPLOYEE_ID = 120에 대한 데이터는 무엇입니까? 감사. –