Den vigtige sætning dér er 'rekordorienteret'. syntaksen for eksplicit markørerklæring
viser også tydeligt, at returtypen skal være en rowtype
, som den definerer som:
Du beder den om at returnere datatypen for en enkelt kolonne, ikke for en række/record. Hvis du ikke ønsker at bruge en eksisterende %ROWTYPE
så giver Oracle mekanismen til at erklære en posttype i stedet, som et andet svar allerede har vist.
Du lader til at beklage dig over, at dokumentationen ikke siger, at du ikke kan bruge en skalarværdi som afkast. Der står heller ikke, at du ikke kan returnere en pakke, en udsigt eller en rolle. Det behøver ikke en udtømmende liste over alt, hvad du ikke kan gør, da det tydeligt fortæller dig præcis, hvad du kan do, hvilket er at returnere en type, der repræsenterer en række.
I dit tilfælde behøver den rækketype kun at indeholde en enkelt kolonne, men der er stadig ingen grund til, at du skal kunne - eller forvente, at Oracle vil - lade dig tage en genvej i det meget begrænsede scenario. Det virker ikke urimeligt at levere en enkelt konsistent mekanisme - det er ikke meget besværligt for dig at erklære record
, hvorimod det ville være en betydelig overhead at bygge, teste og vedligeholde en separat sti til dette.