Oracle
 sql >> Base de données >  >> RDS >> Oracle

Variable %ROWTYPE du nom de la table

Vous ne pouvez probablement pas faire cela (du moins pas utilement).

Vous pourriez construire un bloc PL/SQL anonyme entier

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;

En général, cependant, bien avant de commencer à recourir au PL/SQL dynamique au moment de l'exécution, vous voulez vraiment prendre du recul et évaluer s'il n'existe pas de solution plus simple au problème que vous rencontrez. Il existe un certain nombre de frameworks, par exemple, qui génèrent dynamiquement des packages CRUD pour chacune de vos tables. Cela utilise du PL/SQL dynamique, mais il ne le fait qu'une seule fois dans le cadre d'une construction plutôt que de le faire à chaque fois que vous souhaitez mettre à jour des données.