代码之家  ›  专栏  ›  技术社区  ›  Michał Ziober

如何在Oracle过程中将选择结果存储到变量中

  •  10
  • Michał Ziober  · 技术社区  · 16 年前

    我写了一个简单的程序。我尝试将选择结果存储在变量中。我使用“SELECT INTO”查询,但我不能这样做。

    例子:

    DECLARE
         v_employeeRecord  employee%ROWTYPE;
    BEGIN
     SELECT * INTO v_employeeRecord
          FROM Employee WHERE Salary > 10;
    END;
    
    2 回复  |  直到 16 年前
        1
  •  14
  •   Adam Paynter    16 年前

    DECLARE
         CURSOR v_employeeRecords IS
              SELECT * FROM Employee WHERE Salary > 10;
         v_employeeRecord  employee%ROWTYPE;
    BEGIN
         FOR v_employeeRecord IN v_employeeRecords LOOP
              /* Do something with v_employeeRecord */
         END LOOP;
    END;
    

    或者,您可以创建一个 TABLE 变量:

    DECLARE
         v_employeeRecord  employee%ROWTYPE;
         v_employeeRecords IS TABLE OF employee%ROWTYPE;
         i BINARY_INTEGER;
    BEGIN
     SELECT * BULK COLLECT INTO v_employeeRecords
          FROM Employee WHERE Salary > 10;
    
     i := v_employeeRecords.FIRST;
     WHILE v_employeeRecords.EXISTS(i) LOOP
         v_employeeRecord := v_employeeRecords(i);
         /* Do something with v_employeeRecord */
         i := v_employeeRecords.NEXT(i);
     END;
    END;
    

        2
  •  8
  •   Community Mohan Dere    9 年前

    您需要构建一个循环来浏览结果集:

    Adam

    BEGIN
       FOR c_emp IN (SELECT * 
                       FROM Employee 
                      WHERE Salary > 10) LOOP
          /* do something with each row, for example:*/
          UPDATE foo SET bar = bar + c_emp.salary WHERE id = c_emp.id;
       END LOOP;
    END;