Utilizzando un cursore ref come tipo di ingresso con ODP.NET
-
06-09-2019 - |
Domanda
Sto cercando di utilizzare un RefCursor
come parametro di input su una stored procedure Oracle. L'idea è quella di selezionare un gruppo di record, dar loro da mangiare nella stored procedure e quindi la SP loop sul RefCursor
di ingresso, facendo alcune operazioni ai suoi record. No, non posso selezionare i record all'interno del SP e quindi evitare di dover utilizzare la RefCursor
come un tipo di ingresso.
Ho trovato un esempio su come fare questo su (questo qui sarebbe il link, ma sembra che non posso ancora li usare) la documentazione di Oracle, ma utilizza una semplice SELECT
per popolare il RefCursor
di ingresso; e qui sta il problema:. Ho avuto modo di popolarlo dal codice
Si veda, in codice che ho questo:
[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)]
private List<MiObject> cursor;
E, ho provato a popolare cursore con un List<T>
, un DataTable
, anche una serie di pianura MyObject
, e funziona nulla. Quando provo correre i miei test ho un errore:
"Parametro non valido Linking"
Forse non il testo esatto, come sto traducendo dallo spagnolo, ma questo è il messaggio
Tutte le idee?
Soluzione
Sono anche in contatto con Mark Williams, l'autore di questo articolo ho provato a collegare il mio post, e lui ha risposto kinly in questo modo:
" Non è un problema per me inviare e-mail; tuttavia, penso che deluderà con la mia risposta su questo.
Purtroppo si può fare ciò che si sta cercando di fare (creare un refcursor dal client di simile).
Un paio di problemi con quello sono che un refcursor si riferisce alla memoria di proprietà di Oracle sul server e Oracle non ha il concetto di oggetti client come un DataTable o un elenco NET, ecc.
Avete tutte le altre opzioni disponibili tranne usando un refcursor? "
Quindi, in pratica sono fregato, e questa domanda è chiuso. Grazie per la lettura e / o cercando di aiutare, tutti voi.
Altri suggerimenti
Dalla memoria, non c'è una classe OracleCursor
da qualche parte nella biblioteca ODP.NET che funziona?
questo campione per refcursor come input per pL / SQL da Oracle TechNet.
Il clou è che l'oggetto refcursor ingresso deve essere creata da oracolo themself. Non è possibile convertire un elenco o qualsiasi altra cosa per refcursor.