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

¿Cómo pasar un nombre de tabla como parámetro al procedimiento almacenado?

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.