Oracle:第28行错误:PLS-00103:遇到符号“;文件末尾”;
我有个问题,我想不出来。它表明 第28行错误:PLS-00103:在 应满足以下条件之一: 开始结束函数pragma过程Oracle:第28行错误:PLS-00103:遇到符号“;文件末尾”;,oracle,plsql,Oracle,Plsql,我有个问题,我想不出来。它表明 第28行错误:PLS-00103:在 应满足以下条件之一: 开始结束函数pragma过程 创建或更换包体检查\u emp\u包装 是 程序chk_hiredate (员工中的p_日期。雇用日期%类型) 下面是我的代码: CREATE OR REPLACE PACKAGE BODY check_emp_pkg IS PROCEDURE chk_hiredate (p_date IN employees.hire_date%TYPE) IS
CREATE OR REPLACE PACKAGE BODY check_emp_pkg
IS
PROCEDURE chk_hiredate
(p_date IN employees.hire_date%TYPE)
IS BEGIN
IF MONTHS_BETWEEN(SYSDATE, p_date) > g_max_length_of_service * 12 THEN
RAISE_APPLICATION_ERROR(-20200, 'Invalid Hiredate');
END IF;
END chk_hiredate;
PROCEDURE chk_dept_mgr
(p_empid IN employees.employee_id%TYPE,
p_mgr IN employees.manager_id%TYPE)
IS BEGIN
DECLARE
v_mgr_id departments.manager_id%TYPE;
BEGIN
SELECT manager_id INTO v_mgr_id
FROM departments;
IF p_mgr = v_mgr_id THEN
DBMS_OUTPUT.PUT_LINE('Success');
ELSE
RAISE_APPLICATION_ERROR(-20200, 'Manager ID is not a match');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Manager does not exist');
END chk_dept_mgr;
END check_emp_pkg;
我不知道我为什么会出错 在第二个过程中,您有一个额外的
begin
和declare
。本部分:
PROCEDURE chk_dept_mgr
(p_empid IN employees.employee_id%TYPE,
p_mgr IN employees.manager_id%TYPE)
IS BEGIN
DECLARE
v_mgr_id departments.manager_id%TYPE;
BEGIN
SELECT manager_id INTO v_mgr_id
...
应该是:
PROCEDURE chk_dept_mgr
(p_empid IN employees.employee_id%TYPE,
p_mgr IN employees.manager_id%TYPE)
IS
v_mgr_id departments.manager_id%TYPE;
BEGIN
SELECT manager_id INTO v_mgr_id
...
您可以从缩进中看到,您的块已失去对齐。当你真的不需要一个内部块时,你已经开始了一个内部块,并且没有正确地结束它。您可以在
end if
之后添加一个end
,但该内部块仍然不会添加任何有用的内容。我相信,只有当它是一个独立的过程时,才需要该过程下的IS。另外,您已经运行了包规范,对吗?是的,包规范已经运行并创建。根据我所见,手术正在进行中。我已经在谷歌上搜索过了,它已经被打包在那里了。IDK,错误在哪里。谢谢你的帮助