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

Devolver una 'tabla' (sin nombres de columna predefinidos) desde una función PL/SQL

Lo haría fuertemente Sospecha que no quieres hacer esto. La creación dinámica de tipos de objetos y la construcción de este tipo de flexibilidad en PL/SQL es casi siempre una receta para la ruina. Terminará escribiendo SQL dinámico extremadamente complicado en todas partes (tanto en las personas que llaman como en sus funciones), lo que hará que su código sea mucho más difícil de leer y depurar. Cuando su código se vuelve tan complejo, es mejor que escriba marcos que generen el código, pero eso lo deja con el problema mucho más difícil de escribir código que genere código que resuelva su problema en lugar de solo escribir código que resuelva su problema.

Dicho esto, si realmente está realmente decidido, es posible crear un función de tabla segmentada completamente genérica . Eso implica una hechicería muy, muy profunda usando el marco de Oracle Data Cartridge. Es bastante genial. Pero la cantidad de personas que podrían admitir y extender de manera realista este tipo de código es muy pequeña.

Con un poco menos de magia (pero mucho, mucho más de lo que sugeriría para prácticamente cualquier organización), puede crear un función de tabla canalizada flexible que se basa en la devolución de tipos de una jerarquía de tipos predefinida. Es más probable que sea compatible, pero se supone que puede crear su jerarquía de tipos por adelantado.