Oracle 如何在PL/sql游标中为循环获取用户输入,并根据用户输入更新表?
我要的是emp3表,它与emp表相同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
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;