【发布时间】:2015-06-01 15:38:00
【问题描述】:
编写一个 PL/SQL 过程,将员工编号和薪水作为输入参数,并从员工表中删除经理为“BLAKE”且薪水介于 1000 和 2000 之间的员工。
我写了下面的代码:-
create or replace procedure processing(v_emp_no in emp1.empno%type,v_salary in emp1.sal%type)
is
begin
select empno,sal into v_emp_no,v_salary
from emp where ename = 'BLAKE' and sal between 1000 and 2000;
delete from emp1
where empno = v_emp_no
and sal = v_salary;
end;
出现以下错误:-
第 5 行出错:PLS-00403:表达式“V_EMP_NO”不能用作 SELECT/FETCH 语句的 INTO 目标
【问题讨论】:
-
这正是你所做的;那你为什么忽略输入参数?你到底想在这里做什么?
-
是的,我知道你会遇到什么错误(不过如果你把这个放在你的问题中总是更好,你可以edit)。然而,我问的不是这个。你的代码没有意义。如果您正在输入这些参数,为什么要尝试覆盖它们?为什么不只使用它们来执行删除?如果您不想删除输入的值,我认为不需要将它们作为参数。那么,您究竟想在这里实现什么目标?
-
我不想使用 fetch 覆盖参数...我想通过过程调用...但不知道该怎么做...所以在学习阶段需要帮助。如果你理解问题陈述,请写你的代码sn-p。
-
是否传递参数进行删除?如果是这样,你为什么在 SP 中使用 select?你的输入参数到底是什么?是否要输入员工编号和现有工资作为输入,并检查员工的工资是否在 1000 和 2000 范围内,然后删除?
-
是的,我想传递参数以进行删除。选择语句..是的,我不应该使用 then....输入参数是员工编号和薪水,是的,我必须检查两个条件 1. 如果经理是 'BLAKE' 和 2. 薪水在 1000 到 2000 之间
标签: oracle stored-procedures plsql