sql >> Database >  >> RDS >> Oracle

Wat is het verschil tussen geneste array en associatieve array?

Hier is nog een verschil dat niet zo algemeen bekend is. U kunt twee geneste tabellen vergelijken met = of <> maar associatieve array kan niet.

DECLARE

    TYPE associative_array IS TABLE OF INTEGER INDEX BY PLS_INTEGER;
    a_var_associative_array associative_array;
    b_var_associative_array associative_array;

    TYPE nested_table IS TABLE OF INTEGER;
    a_var_nested_table nested_table := nested_table(1, 2, 3, 4, 5);
    b_var_nested_table nested_table := nested_table(5, 4, 3, 2, 1);

BEGIN

    IF a_var_nested_table = b_var_nested_table THEN
        -- Note, the different order of values!
        DBMS_OUTPUT.PUT_LINE ( 'TRUE' );
    ELSE
        DBMS_OUTPUT.PUT_LINE ( 'FALSE' );
    END IF;

    -- IF a_var_associative_array = b_var_associative_array THEN -> gives you an error! 

END;

Als je met geneste tabellen werkt, kun je ook Multiset gebruiken Operators , Multiset-voorwaarden en SET die niet beschikbaar zijn voor associatieve arrays.



  1. Hoe dezelfde query op meerdere tabellen in de database uit te voeren?

  2. mysql opgeslagen functieparameter

  3. Geneste SELECT COUNT maken met alias in Postgres

  4. Hoe Extract() werkt in PostgreSQL