PLS-00103: 遇到符号 "/"
问题出现的原因是代码中的"/"符号被错误地放置在了错误的位置,导致编译时出现了错误。
解决方法是将"/"符号放置在正确的位置。在这个例子中,"/"符号应该放在PACKAGE EMP_PACKAGE AS部分的末尾,而不是PACKAGE BODY EMP_PACKAGE AS部分的末尾。
以下是修改后的代码:
create or replace PACKAGE EMP_PACKAGE AS TYPE EMP_TYPE IS RECORD ( /* Employee Type */ employee_id NUMBER(6,0), first_name VARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), phone_number VARCHAR2(20), hire_date DATE, job_id VARCHAR2(10), salary NUMBER(6,2), commission_pct NUMBER(2,2), manager_id NUMBER(6,0), department_id NUMBER(4,0) ); PROCEDURE add_emp(p_employee_id NUMBER); PROCEDURE edit_first_name(p_employee_id NUMBER, p_first_name employees.first_name%TYPE); FUNCTION get_emp(p_employee_id NUMBER) RETURN EMP_TYPE; END; / create or replace PACKAGE BODY EMP_PACKAGE AS -- procedure will edit an employee's first name PROCEDURE edit_first_name(p_employee_id NUMBER, p_first_name employees.first_name%TYPE) IS BEGIN update employees emp set emp.first_name = p_first_name where emp.employee_id = p_employee_id; END edit_first_name; PROCEDURE add_emp(p_employee_id NUMBER) IS BEGIN null; END; FUNCTION get_emp(p_employee_id NUMBER) RETURN EMP_TYPE IS BEGIN return null; END; END; /
修改后的代码中,"/"符号正确地放置在了PACKAGE EMP_PACKAGE AS部分的末尾,这样就解决了问题。
在包规范中,您有以下行:
FUNCTION get_emp(employee_id NUMBER) RETURN employee_id;
employee_id
不是有效的数据类型。
一旦将其更改为有效类型,然后进入包体中的错误:
- 您缺少
ADD_EMP
过程和GET_EMP
函数。 PROCEDURE edit_first_name(employee_id NUMBER)
与包规范中的声明不匹配,因为缺少first_name employees.first_name%TYPE
参数。- 在
INSERT INTO employees (employees.first_name) VALUES (first_name);
中,列应为first_name
而不是employees.first_name
。
我已经更改了您提到的所有内容,但是我仍然遇到了之前的错误。由于注释的字符计数限制,我不确定如何向您展示我所做的更改。不过,我理解您提出的所有建议。