【问题标题】:How can i store results of a query in an array?如何将查询结果存储在数组中?
【发布时间】:2021-12-28 08:25:58
【问题描述】:

我必须将employees 表中最后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 中数组的概念

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

    假设您使用的是 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小提琴here

    【讨论】:

    • 谢谢!它就像一个魅力。现在我如何使用该信息进行查询?我想使用存储在coduri 中的 ID 更新员工的数据。我试过 DBMS_OUTPUT.GET_LINE 但它说PL/SQL compiler error
    • @DragosPolifronie 如果您想提出与该问题不同的问题,那么最好向ask a new question 提出,并在该问题中包含minimal reproducible example,并详细描述您的表格、示例数据和您的预期输出。您可能有一个 XY 问题,不需要使用数组,并且可以在单个 SQL 语句中完成所有操作;但我们无法确定这一点,除非您完全描述您正在尝试做的事情。
    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2016-10-17
    • 2020-03-09
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多