如何将查询结果存储在数组中?

How can i store results of a query in an array?

我必须将员工 table 的最后 5 employees_id 存储到一个数组中。 我使查询正确并且我有数组,但我无法理解将结果存储在该数组中的语法。这是我的代码

    type tip_cod IS VARRAY(20) OF NUMBER;
    coduri tip_cod := tip_cod(6);

这是我的查询

SELECT employee_id FROM (
SELECT employee_id from employees
where commission_pct IS NULL
order by salary asc)
WHERE ROWNUM < 6;

如何将查询结果存储在数组中?因为我需要在另一个查询中更新这些值。我知道这可以通过子查询以更简单的方式完成,但我这样做是为了更好地理解 sql

中数组的概念

假设您使用的是 Oracle,那么您可以使用 PL/SQL 块:

DECLARE
  TYPE tip_cod IS VARRAY(20) OF NUMBER;
  coduri tip_cod;
BEGIN
  SELECT employee_id
  BULK COLLECT INTO coduri
  FROM (
    SELECT employee_id
    from   employees
    where  commission_pct IS NULL
    order by salary asc
  )
  WHERE ROWNUM < 6;

  -- Do something with coduri
  FOR i IN 1 .. coduri.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE(coduri(i));
  END LOOP;
END;
/

db<>fiddle here