Sto provando a chiamare un blocco PL/SQL con ADO e VBA, ma non posso passare input e/o output bind variables (probabilmente anche parametri).Con ADO, come faccio a chiamare un blocco Oracle PL/SQL e specificare le variabili di binding di input/output (parametri?)
dim cn as ADODB.connection
' ... open connection ...
dim plsql as string
plsql = "declare"
plsql = plsql & " num_in number := ?;"
plsql = plsql & " num_out number; "
plsql = plsql & "begin"
plsql = plsql & " num_out := num_in * 5;"
plsql = plsql & " ? := num_out;"
plsql = plsql & "end;"
dim cm as ADODB.command
set cm = new ADODB.command
set cm.activeConnection = cn
cm.commandText = plsql
cm.commandType = adCmdText
cm.parameters.append cm.createParameter(, adDouble, adParamInput,, 5)
cm.parameters.append cm.createParameter(, adDouble, adParamOutput )
cm.execute ' FAILS HERE
msgBox(cm.parameters(2))
Il frammento sopra non riesce alla linea cm.execute
con una ORA-01008: non tutte le variabili vincolate
Apprezzerei tutto l'aiuto verso una soluzione per il mio problema.
Non sono sicuro che Oracle ti permetta di definire variabili all'interno del blocco anonimo di PL/SQL come quello. Cosa stai cercando di fare? –
Questa è ovviamente una versione ridotta di ciò che in realtà voglio ottenere. La cosa reale è istanziare un tipo di oggetto PL/SQL, passare l'istanza ad una procedura, e poi valutare alcuni metodi e memeber sul tipo di oggetto in seguito. –
Ottima domanda ... i modi infinitamente bizzarri in cui oracolo e ado entrano in conflitto sono infiniti ... –