在使用select时,我遇到了一些程序问题
我需要一个程序,向我展示某个员工多年的经验
它看起来像这样:我写了一个雇员的名字,它向我展示了岁月
我想出了这样的事情:
CREATE OR REPLACE PROCEDURE check_emp (fname in varchar2(20))
AS
emp_fname employee.fname%TYPE;
emp_hire_date employee.hire_date%TYPE;
BEGIN
select fname, hire_date in emp_fname, emp_hire_date FROM employee
where emp_fname = fname
and emp_hire_date = months_between(sysdate, hire_date)/12;
if emp_hire_date > 30
then
DBMS_OUTPUT.PUT_LINE (emp_fname ||'worked'||emp_hire_date||'years')
end if;
end;
它返回PLS-00103错误我也不认为我需要这两个字符串
emp_fname employee.fname%TYPE;
emp_hire_date employee.hire_date%TYPE;
我试着用
DECLARE emp_years in NUMBER;
但它也不起作用
2 回答
你在程序中有几个问题
在DBMS_OUTPUT.PUT_LINE中
你必须添加
;
(终止符)或者你会有错误 .在选择中你必须添加
into
而不是in
.在您没有指定varchar2长度的过程中 .
在条件中,为什么要添加日期条件?你想要员工的总年份
您需要从您已拥有的选择中的名称中得到什么 .
在
if
条件,你是什么意思30?我指定员工是否超过一年,然后我们将有一个dbms输出
这是最后的程序
非常感谢@Moudiz解决这个问题,但我也编辑了他的代码现在它看起来就像我需要的那样
所以你只需要写一个雇员的名字,程序就会返回他工作的年数