Oracle
 sql >> Database >  >> RDS >> Oracle

%ROWTYPE variabile dal nome della tabella

Probabilmente non puoi farlo (almeno non in modo utile).

Potresti costruire un intero blocco PL/SQL anonimo

v_plsql := 'DECLARE ' ||
           '  l_row ' || p_table_name || '%rowtype; ' ||
           'BEGIN ' ||
           '  SELECT * ' ||
           '    INTO l_row ' ||
           '    FROM ' || p_table_name ||
           '    WHERE id = ' || p_some_old_value || ';' ||
           ...
EXECUTE IMMEDIATE v_plsql;

In generale, tuttavia, molto prima di iniziare a ricorrere a PL/SQL dinamico in fase di esecuzione, si desidera davvero fare un passo indietro e valutare se non esiste una soluzione più semplice a qualsiasi problema si presenti. Esistono numerosi framework, ad esempio, che generano dinamicamente pacchetti CRUD per ciascuna delle tabelle. Questo sta usando PL/SQL dinamico ma lo sta facendo solo una volta come parte di una build invece di farlo ogni volta che vuoi aggiornare i dati.