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

¿Se permite el uso de SELECT dentro de una función de tabla PL/SQL canalizada?

  1. por lo general, las restricciones DML solo se refieren a declaraciones de modificación (ACTUALIZAR, ELIMINAR ...), por lo que SELECCIONAR debería estar bien. Intentaré encontrar una declaración específica de Oracle.

  2. Las vistas serían su primera herramienta para modularizar consultas de uso común.

  3. Las funciones tienen un inconveniente con respecto a las vistas:si se las llama desde otro SELECT, no se ejecutan en el mismo momento que el SELECT principal. Cada llamada a SELECT es consistente, pero dado que SELECT está en el código de función y no en el SQL principal, es posible que devuelva resultados inconsistentes. Esto no es posible con las vistas y la subselección:si una declaración grande llama a una vista, la vista se crea en el mismo momento que la consulta principal.

Actualizar :con respecto a su comentario sobre consultas parametrizadas

Puede crear vistas parametrizadas, es decir, vistas que dependen de las variables establecidas antes de la ejecución. Aquí hay un ejemplo en AskTom mostrando cómo podría hacerlo con userenv('client_info') o dbms_session.set_context .