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.