Próbuję wywołać blok PL/SQL z ADO i VBA, ale nie mogę przekazać danych wejściowych i/lub wyjściowe zmienne wiążące (prawdopodobnie aka parametry).W ADO, jak wywołać blok PL/SQL Oracle i określić zmienne wiążące wejścia/wyjścia (parametry?)
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))
Fragment powyżej nie na linii cm.execute
z ORA-01008: nie wszystkie zmienne związane
będę wdzięczny za każdą pomoc w rozwiązaniu dla mojego problemu.
Nie jestem pewien, czy Oracle pozwala definiować zmienne wewnątrz anonimowego bloku PL/SQL. Co próbujesz zrobić? –
To jest oczywiście przycięta wersja tego, co naprawdę chcę osiągnąć. Prawdziwą rzeczą jest utworzenie instancji typu PL/SQL, przekazanie instancji do procedury, a następnie ocena kilku metod i odczytywanie typu obiektu po nim. –
Bardzo dobre pytanie ... nieskończenie dziwne sposoby, w jakie wyrocznia i ado wchodzą w konflikt, są nieskończenie wiele ... –