No puede crear un %ROWTYPE
variable para una tabla desconocida y no puede hacer referencia estática a los nombres de las columnas cuando no conoce el nombre de la tabla en el momento de la compilación.
Puede usar el paquete dbms_sql para manejar sentencias SQL completamente dinámicas. Deberá preparar la declaración SQL, describir las columnas para averiguar la cantidad de columnas y sus tipos de datos, vincular las variables apropiadas y luego obtener los datos. Es una forma mucho más engorrosa de escribir código que el ejemplo que publicaste, pero te brinda una flexibilidad extrema.
Hay una serie de ejemplos del uso del paquete dbms_sql en la documentación a la que me vinculé. También puede consultar la función dump_csv de Tom Kyte, que escribe el resultado de una consulta arbitraria en un archivo CSV utilizando UTL_FILE
. Si realmente desea escribir los datos en DBMS_OUTPUT
, simplemente podría reemplazar el UTL_FILE
llamadas con DBMS_OUTPUT
. Pero estoy bastante seguro de que desea hacer algo más útil que simplemente escribir los datos en DBMS_OUTPUT
búfer, por lo que el procedimiento de Tom probablemente esté más cerca de lo que realmente está tratando de lograr.