Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 16:46   #1
Lionne
Новичок
Джуниор
 
Регистрация: 15.04.2013
Сообщений: 1
По умолчанию VBA и Oracle: stored procedure из VBA и сохранение текста в переменной

Добрый день,

Кто-нибудь сталкивался с проблемой выполнения функции Oracle, т.н. Oracle stored procedure, и сохранением результата в переменной?

Операционка: Win XP SP3
Excel 2003
Oracle Client: 11g

Сохранять данные select statements можно с использованием драйвера ODBC (Driver: Oracle in XE), который безукоризненно работает в моем случае:
Код:
'-----------------------
Sub Extract_Data()
 
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim db_name, UserName, Password As String
 
cn.Open db_name, USerName, Password
 
sql_statement = "SELECT some_text FROM some_table"
 
Set rs = cn.Execute(sql_statement)
rs.MoveFirst 'jump to the first entry in the data list
 
Row = 2
While Not rs.EOF
'save the data to a worksheet
ip.Cells(Row, 2) = rs(0).Value
Row = Row + 1
rs.MoveNext
Wend
End Sub
'-----------------------
Но мне нужно обратиться к stored procedure и сохранить буквенно-цифровой результат, разделенный точкой с запятой, в качестве переменной. Проблема состоит в том, что моя процедура доходя до определения параметров выдает ошибку:
"не могу найти объект в коллекции, соответствующий имени или порядковому номеру, запрашиваемым приложением"

далее код:

Код:
'----------------------
Public Sub obj_class()
 
Dim cn As New ADODB.Connection
Dim strSQL, cn As String
Dim adoCMD As ADODB.Command
Dim adoRS As ADODB.Recordset
 
Set wb = Excel.ActiveWorkbook
Set ih = wb.Sheets("InfoSheet")
 
cn.Open db_name, UserName, Password
 
Set adoCMD = New ADODB.Command
With adoCMD
.ActiveConnection = cn
.CommandText = "S#mdb$stg_da_extr_util.get_all_classes_of_classif"
.CommandType = adCmdStoredProc
.Parameters.Refresh
.Parameters("i_caller").Value = "'STG_DATA_REQUEST'" 'ошибка появляется здесь
.Parameters("i_obj_classif_id").Value = 120
 
Set adoRS = .Execute()
End With
End Sub
'----------------------
Я пыталась спрашивать на этом форуме:
http://www.access-programmers.co.uk/...67#post1241667
но к сожалению безрезультатно.

Надеюсь и буду премного благодарна за любую подсказку.
Lionna
Lionne вне форума Ответить с цитированием
Старый 15.04.2013, 19:51   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Сначала параметр надо создать ,потом ему значение присваивать.
Идея такова,не проверял
Код:
Set adoCMD = New ADODB.Command
With adoCMD
.ActiveConnection = cn
.CommandText = "S#mdb$stg_da_extr_util.get_all_classes_of_classif"
.CommandType = adCmdStoredProc
.CreateParameter "i_caller", adChar, adParamInputOutput
.CreateParameter "i_obj_classif_id", adInteger, adParamInputOutput
.Parameters("i_caller").Value = "'STG_DATA_REQUEST'" ''ошибка появляется здесь
.Parameters("i_obj_classif_id").Value = 120
Set adoRS = .Execute()
End With
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в VBA.Type-mismatch. Где я неверно указала тип переменной? mozart2012 Помощь студентам 4 28.01.2013 15:33
Выполнение select для stored procedure RISagitov SQL, базы данных 3 18.10.2012 00:29
Oracle + VBA 2008 ОТКАТ ТРАНЗАКЦИИ James_047 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 17.03.2012 21:38
Oracle и VBA Bezkolena Помощь студентам 0 05.06.2011 00:49
Vba excel Удаление Текста HelperAwM Microsoft Office Excel 4 19.06.2010 23:55