sql >> Database >  >> RDS >> Oracle

Selectieresultaat opslaan in variabele in Oracle-procedure

Je hebt een paar opties. Je zou die vraag in een cursor kunnen veranderen:

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;

Of u kunt een TABLE . maken variabele:

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;

Ik heb deze voorbeelden niet in Oracle geprobeerd, dus je kunt compilerfouten krijgen...



  1. Nooit items verwijderen? Goed idee? Gebruikelijk?

  2. kolom bestaat niet, zelfs niet bij gebruik van het trefwoord 'as'

  3. mysql Toegang geweigerd voor gebruiker ''@'localhost' tot database ''

  4. codeigniter:update tabel van een andere tabel met sessie