No guia de conceitos :
A frase importante ali é 'orientada a registros'. A sintaxe para declaração explícita de cursor também mostra claramente que o tipo de retorno deve ser um
rowtype
, que define como:Você está pedindo para retornar o tipo de dados de uma única coluna, não de uma linha/registro. Se você não quiser usar um
%ROWTYPE
existente então o Oracle fornece o mecanismo para declarar um tipo de registro, como outra resposta já mostrou. Você parece estar reclamando que a documentação não diz que você não pode usar um valor escalar como retorno. Também não diz que você não pode retornar um pacote, uma visão ou uma função. Ele não precisa listar exaustivamente tudo o que você não pode fazer, já que mostra claramente o que você pode do, que é retornar um tipo que representa uma linha.
No seu caso, esse tipo de linha precisa conter apenas uma única coluna, mas ainda não há motivo para você poder - ou esperar que o Oracle - permita que você use um atalho nesse cenário muito limitado. Não parece irracional fornecer um único mecanismo consistente - não é muito difícil para você declarar o
record
, enquanto construir, testar e manter um caminho separado para isso seria uma sobrecarga considerável.