Oracle 如何在PL/sql游标中为循环获取用户输入,并根据用户输入更新表?

Oracle 如何在PL/sql游标中为循环获取用户输入,并根据用户输入更新表?,oracle,plsql,Oracle,Plsql,我要的是emp3表,它与emp表相同 DECLARE CURSOR incr_cur IS SELECT * FROM emp3 FOR UPDATE OF sal; v_job emp3.job%TYPE := '&ENTER_Job'; v_cnt INTEGER; BEGIN FOR r_l IN incr_cur LOOP IF v_job = r_l.job THEN UPDATE emp3 SET sal = sal + 100 WHERE CU

我要的是emp3表,它与emp表相同

DECLARE 
  CURSOR incr_cur IS SELECT * FROM emp3 FOR UPDATE OF sal;
   v_job emp3.job%TYPE := '&ENTER_Job';
   v_cnt INTEGER;
BEGIN
 FOR r_l IN incr_cur LOOP
  IF v_job = r_l.job THEN
   UPDATE emp3 SET sal = sal + 100 WHERE CURRENT OF incr_cur;
  END IF;
 END LOOP;

FOR p_l IN incr_cur LOOP
IF v_job = p_l.job THEN
  DBMS_OUTPUT.PUT_LINE('The Salary of ' || p_l.ename || ' is: ' || p_l.sal || ' (Incremented).');
ELSE
  DBMS_OUTPUT.PUT_LINE('The Salary of ' || p_l.ename || ' is: ' || p_l.sal || ' (Not Incremented).');
END IF;
END LOOP;
END;
执行脚本后,它将请求用户输入。 我给了输入“职员”和输出,

但我想要这样的输出,

只要在
if
条件后增加一个变量,然后在末尾显示它

DECLARE
    CURSOR ..
    ..
    v_cnt INTEGER;

    BEGIN
    ..
    ..
      FOR p_l in incr_cur  --second for loop
       LOOP
         IF v_job = p_l.job
          v_cnt := v_cnt + 1;
      ..
      END LOOP;
    DBMS_OUTPUT.PUT_LINE('The Salary of '||v_cnt||' Employees are Incremented by 100');
END;

请不要发布文本图像-只需复制/粘贴文本。谢谢,它正在工作。我使用的表格包含5种类型的工作:职员、推销员、经理、分析师和总裁。假设我输入的“DEVELOPER”不是表中的工作类别,那么如何显示消息“给定的工作未列出”。请回答,我使用的表包含5种类型的工作:职员、推销员、经理、分析师和总裁。假设我输入的“DEVELOPER”不是表中的作业类别,那么如何显示一条消息,“给定的作业未列出”。@user5499820:我建议您将其作为一个单独的问题提问,因为这个问题回答了您最初的要求。
DECLARE 
CURSOR incr_cur IS SELECT * FROM emp3 FOR UPDATE OF sal;
v_job emp3.job%TYPE := '&ENTER_Job';
v_cnt INTEGER := 0;
BEGIN
FOR r_l IN incr_cur LOOP
  IF v_job = r_l.job THEN
    UPDATE emp3 SET sal = sal + 100 WHERE CURRENT OF incr_cur;
  END IF;
END LOOP;

FOR p_l IN incr_cur LOOP
  IF v_job = p_l.job THEN
    v_cnt := v_cnt + 1;
    DBMS_OUTPUT.PUT_LINE('The Salary of ' || p_l.ename || ' is: ' || p_l.sal || ' (Incremented).');
  ELSE
    DBMS_OUTPUT.PUT_LINE('The Salary of ' || p_l.ename || ' is: ' || p_l.sal || ' (Not Incremented).');
  END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('The Salary of '|| v_cnt ||' Employees are Incremented by 100');
END;