如何将查询结果存储在数组中?
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
我必须将员工 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