Oracle
 sql >> Database >  >> RDS >> Oracle

Tipo restituito del cursore Oracle

Dalla guida ai concetti :

La frase importante è "orientata al record". La sintassi per la dichiarazione esplicita del cursore mostra anche chiaramente che il tipo restituito deve essere un rowtype , che definisce come:

Gli stai chiedendo di restituire il tipo di dati di una singola colonna, non di una riga/record. Se non desideri utilizzare un %ROWTYPE esistente quindi Oracle fornisce invece il meccanismo per dichiarare un tipo di record, come ha già mostrato un'altra risposta.

Sembri lamentarti del fatto che la documentazione non dice che non puoi utilizzare un valore scalare come ritorno. Inoltre non dice che non puoi restituire un pacco, una vista o un ruolo. Non è necessario elencare in modo esaustivo tutto ciò che non puoi farlo, poiché ti dice chiaramente esattamente cosa puoi do, che consiste nel restituire un tipo che rappresenta una riga.

Nel tuo caso quel tipo di riga deve contenere solo una singola colonna, ma non c'è ancora alcun motivo per cui dovresti essere in grado - o aspettarti che Oracle - ti permetta di prendere una scorciatoia in quello scenario molto limitato. Non sembra irragionevole fornire un unico meccanismo coerente:non è molto difficile per te dichiarare il record , mentre costruire, testare e mantenere un percorso separato per questo sarebbe un sovraccarico considerevole.