【发布时间】:2015-04-27 00:05:24
【问题描述】:
我遇到的问题是包体,我曾多次尝试更改第二个过程的 select 语句中的代码,但我无法弄清楚。
有人有什么见解吗?我所有的代码和错误都在下面。
CREATE OR REPLACE PACKAGE check_emp_pkg IS
g_max_length_of_service CONSTANT NUMBER := 100;
PROCEDURE chk_hiredate
(p_date IN employees.hire_date%TYPE);
PROCEDURE chk_dept_mgr
(p_empid IN employees.employee_id%TYPE
, p_mgr IN employees.manager_id%TYPE);
END check_emp_pkg;
/
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
IF SELECT employee_id, manager_id INTO p_empid, p_mgr
FROM employees
WHERE manager_id = p_mgr THEN DBMS_OUTPUT.PUT_LINE('SUCCESS');
ELSE NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
END IF;
END chk_dept_mgr;
END check_emp_pkg;
/
第 15 行错误:PLS-00103:遇到符号“CHECK_EMP_PKG” 预期以下情况之一时:;
- 创建或替换包体 check_emp_pkg 是
- 过程 chk_hiredate
- (p_date IN employees.hire_date%TYPE) 开始
【问题讨论】:
-
你的包体语法真的很乱。你不能做,“如果选择..”你需要做一个选择,然后检查任何条件。推荐阅读一些pl/sql教程。
标签: sql plsql oracle11g packages procedure