sql >> Base de Datos >  >> RDS >> Oracle

%ROWTYPE variable del nombre de la tabla

Probablemente no puedas hacer esto (al menos no de forma útil).

Podría construir un bloque PL/SQL anónimo completo

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;

Sin embargo, en general, mucho antes de comenzar a recurrir a PL/SQL dinámico en tiempo de ejecución, realmente desea dar un paso atrás y evaluar si no existe una solución más fácil para cualquier problema que tenga. Hay una gran cantidad de marcos, por ejemplo, que generan dinámicamente paquetes CRUD para cada una de sus tablas. Eso es usar PL/SQL dinámico, pero solo lo hace una vez como parte de una compilación en lugar de hacerlo cada vez que desea actualizar los datos.