PLSQL问题:使用带有过程块的随机值更新员工的薪水

问题描述 投票:0回答:1

所以我正在努力解决此代码的问题。我必须为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;
sql database plsql sqlplus
1个回答
0
投票

我认为您想过滤updateselect是不必要的:

       update AlphaCoEmp
           set salary = ROUND(dbms_random.value(low, high)
           where name = p_name;
© www.soinside.com 2019 - 2024. All rights reserved.