关联数组和循环

时间:2017-07-27 11:05:45

标签: sql oracle plsql

我需要选择employee_id从100到110的员工,遍历emp表并向每个emp_salary添加10%,然后显示emp表的结果

DECLARE
  vname VARCHAR(100);
  TYPE emp_table_type is TABLE OF employees.last_name%TYPE
  INDEX BY PLS_INTEGER;

  vname_table emp_table_type;

BEGIN
  for i in 100..110
    SELECT last_name into vname from employees where employee_id = i;
  end loop;

  vname_table(1) := vname;

  DBMS_OUTPUT.PUT_LINE(vname_table(1));
End;

1 个答案:

答案 0 :(得分:1)

  

我需要选择employee_id从100到110的员工循环   通过emp表并为每个emp_salary添加10%,然后显示结果   来自emp表

你可以这样做:

DECLARE
   sal           NUMBER;    
   TYPE emp_table_type IS TABLE OF employee.employee_id%TYPE
      INDEX BY PLS_INTEGER;    
   vname_table   emp_table_type;

BEGIN
  ---Selecting employee
   SELECT employee_id
     BULK COLLECT INTO vname_table
     FROM employee
    WHERE employee_id BETWEEN 100 AND 110;

   FOR i IN 1 .. vname_table.LAST
   LOOP
        --- Updating Salary 
         UPDATE Employee
            SET salary = salary + (salary * 0.10)
          WHERE employee_id = vname_table (i)
      RETURNING salary
           INTO sal;

     --- Displaying updated salary
      DBMS_OUTPUT.PUT_LINE (sal);
   END LOOP;
END;
相关问题