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

Tipo de retorno del cursor de Oracle

De la guía de conceptos :

La frase importante allí es 'orientado al registro'. La sintaxis para la declaración explícita del cursor también muestra claramente que el tipo de retorno tiene que ser un rowtype , que define como:

Le está pidiendo que devuelva el tipo de datos de una sola columna, no de una fila/registro. Si no desea utilizar un %ROWTYPE existente entonces Oracle proporciona el mecanismo para declarar un tipo de registro en su lugar, como ya se ha mostrado en otra respuesta.

Parece que se queja de que la documentación no dice que no puede usar un valor escalar como retorno. Tampoco dice que no puede devolver un paquete, una vista o un rol. No es necesario enumerar exhaustivamente todo lo que no puede hacer, ya que claramente le dice exactamente lo que puede do, que es devolver un tipo que representa una fila.

En su caso, ese tipo de fila solo necesita contener una sola columna, pero aún no hay ninguna razón por la que deba poder, o esperar que Oracle lo haga, permitirle tomar un atajo en ese escenario tan limitado. No parece irrazonable proporcionar un único mecanismo consistente; no es una gran dificultad para usted declarar el record , mientras que construir, probar y mantener un camino separado para esto sería una sobrecarga considerable.