PL SQL Вопрос: Обновить зарплату сотрудника, используя случайное значение с блоком процедуры - PullRequest
0 голосов
/ 05 мая 2020

, поэтому я изо всех сил пытаюсь выяснить проблему с этим кодом. Мне нужно написать процедуру для 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;

1 Ответ

0 голосов
/ 05 мая 2020

Я думаю, вы хотите отфильтровать update. select не нужен:

       update AlphaCoEmp
           set salary = ROUND(dbms_random.value(low, high)
           where name = p_name;
...