У меня есть следующие тела из моего пакета, используемого, чтобы сделать некоторые операции CRUD в HR схеме:Ошибки создания тела пакета Oracle
CREATE SEQUENCE emp_sequence;
CREATE OR REPLACE PACKAGE BODY employee_crud AS
PROCEDURE create_emp(p_last_name IN employees.last_name%type, p_first_name IN employees.first_name%type,
p_email IN employees.email%type, p_hire_date IN employees.hire_date%type,
p_job_id IN employees.job_id%type) AS
BEGIN
SELECT emp_sequence.NEXTVAL INTO id FROM dual;
INSERT INTO employees(last_name, first_name, email, hire_date, job_id)
VALUES (emp_seq.nextval, p_last_name, p_first_name, p_email, p_hire_date, p_job_id);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
dbms_output.put_line('error');
END create_emp;
PROCEDURE erase_emp(p_employee_id IN employees.employee_id%type) AS
BEGIN
DELETE FROM employees
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error');
END erase_emp;
PROCEDURE upd_emp(p_employee_id IN employees.employee_id%type, p_salary IN employees.salary%type,
p_email IN employees.email%type, p_department_id IN employees.department_id%type) AS
BEGIN
UPDATE employees
SET employee_id = p_employee_id,
salary = p_salary,
email = p_email,
department_id = p_department_id
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('error');
END upd_emp;
PROCEDURE read_emp(p_employee_id IN employees.employee_id%type, p_last_name OUT employees.last_name%type,
p_first_name OUT employees.first_name%type, p_email OUT employees.email%type,
p_hire_date OUT employees.hire_date%type, p_job_id OUT employees.job_id%type,
p_salary OUT employees.salary%type) AS
BEGIN
SELECT employee_id, last_name, first_name, email, hire_date, job_id, salary
INTO p_last_name, p_first_name, p_email, p_hire_date, p_job_id, p_salary
FROM EMPLOYEES
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Error');
END read_emp;
END employee_crud;
/
После создания спецификации (что правильно), я создаю последовательность, чтобы помочь добавление сотрудников. Но, компилируя корпус пакета, он показывает следующие ошибки:
LINE/COL ERROR
-------- ----------------------------------------------------
10/5 PL/SQL: SQL Statement ignored
10/38 PLS-00201: 'ID' must be declared
10/41 PL/SQL: ORA-00904: : identifier is not valid
11/5 PL/SQL: SQL Statement ignored
11/17 PL/SQL: ORA-00913: too many values
49/5 PL/SQL: SQL Statement ignored
51/5 PL/SQL: ORA-00947: insufficient values
Что мне делать, чтобы исправить эти ошибки? Я изменил некоторые имена из своего кода, потому что это назначение, и у меня проблемы с попытками сделать это без ошибок.
Вы не указали локальную переменную с именем 'ID'? Ошибки «слишком много значений» и «недостаточных значений» кажутся достаточно ясными - просто подсчитайте количество столбцов/значений в каждой части этих операторов. –
'Что мне делать, чтобы исправить эти ошибки? «Лучший ответ - это изучение основ. Есть так много ошибок. И большинство из них даст вам ключ к чтению самого сообщения. Всего наилучшего! –
@MaheswaranRavisankar, AlexPoole, я знаю, что у меня были некоторые небольшие ошибки, которые я раньше не видел (я новичок><).И хорошо, я не нашел причину своих ошибок, пока я не попросил здесь о помощи. Большое спасибо за ваши ответы. – KPavezC