所以我正在努力解决此代码的问题。我必须为setSalaries()写一个过程,在这里我需要能够将人的薪水(作为参数传递的名称)更新为某个范围内(作为参数传递的)随机生成的值,但是我遇到了错误。到目前为止,这是我的代码。任何帮助将不胜感激。
Create or Replace Procedure setEmpSalary(p_name in VARCHAR low in INTEGER, high in INTEGER)
As
l_salary AlphaCoEmp.salary%type;
BEGIN
Select salary from AlphaCoEmp where name = p_name;
l_salary = ROUND(dbms_random.value(low,high));
update AlphaCoEmp
set salary = l_salary
commit;
END;
/
show errors;
这是另一个类似问题的示例代码,但是它为表中的每个人分配了一个值
Create or Replace Procedure setSalaries(low in INTEGER, high in INTEGER)
As
Cursor Emp_cur IS
Select * from AlphaCoEmp;
-- Local variables
l_emprec Emp_cur%rowtype;
l_salary AlphaCoEmp.salary%type;
BEGIN
for l_emprec IN Emp_cur
loop
l_salary := ROUND(dbms_random.value(low,high));
update AlphaCoEmp
set salary = l_salary
where name = l_emprec.name;
END LOOP;
commit;
END;
/
show errors;
我认为您想过滤update
。 select
是不必要的:
update AlphaCoEmp
set salary = ROUND(dbms_random.value(low, high)
where name = p_name;