Důležitá fráze tam je 'rekordně orientovaný'. syntaxe pro explicitní deklaraci kurzoru
také jasně ukazuje, že návratový typ musí být rowtype
, kterou definuje jako:
Požadujete, aby vrátil datový typ jednoho sloupce, nikoli řádku/záznamu. Pokud nechcete použít existující %ROWTYPE
pak Oracle poskytuje mechanismus pro deklaraci typu záznamu, jak již ukázala jiná odpověď.
Zdá se, že si stěžujete, že dokumentace neříká, že nemůžete jako návrat použít skalární hodnotu. Také neříká, že nemůžete vrátit balíček, pohled nebo roli. Není třeba vyčerpávajícím způsobem vyjmenovávat vše, co nemůžete dělejte, protože vám jasně říká, co přesně můžete do, což má vrátit typ, který představuje řádek.
Ve vašem případě musí tento typ řádku obsahovat pouze jeden sloupec, ale stále neexistuje žádný důvod, proč byste měli být schopni – nebo očekávat, že vám Oracle umožní – v tomto velmi omezeném scénáři použít zkratku. Zdá se, že není nerozumné poskytnout jediný konzistentní mechanismus – prohlásit record
pro vás není příliš obtížné , zatímco jejich budování, testování a udržování samostatné cesty by pro to znamenalo značnou režii.