Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Не найдено имя аргумента для процедуры PL/SQL / 14 сообщений из 14, страница 1 из 1
03.03.2015, 17:25
    #38893889
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Коллеги,

Имеется следующий код для вызова функции Oracle:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
     strCon = "Provider=MSDAORA.1; Data Source=test; User ID=test; Password=test"
     Set oCMD = CreateObject("ADODB.Command")
     Set oCon = CreateObject("ADODB.Connection")
     Set oRS = CreateObject("ADODB.Recordset")
     oCon.Open strCon

     oCMD.ActiveConnection = oCon
          
     oCMD.CommandText = "{call tctdbs.test.CheckConnection(?,?,{resultset 0, aResult})}"
     oCMD.Parameters.Refresh
     oCMD.Parameters("aDateFrom").Value = "111"
     oCMD.Parameters("aDateTo").Value = "222"
     Set oRS = oCMD.Execute
     
     y = 2
     While Not oRS.EOF
        Cells(y, 1).Value = oRS("DAT")
        Cells(y, 2).Value = oRS("DT")
        Cells(y, 3).Value = oRS("TXT")
        y = y + 1
        oRS.MoveNext
     Wend
     oCon.Close



На строке Set oRS = oCMD.Execute получаю сообщение (во вложении)
Что не так? Аргументы зацепились. Значения им присвоены. Куда копать?
...
Рейтинг: 0 / 0
03.03.2015, 17:39
    #38893920
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
If you need this functionality, use the OLE DB Provider for ODBC and the Microsoft Oracle ODBC driver.
...
Рейтинг: 0 / 0
03.03.2015, 17:40
    #38893922
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
...
Рейтинг: 0 / 0
03.03.2015, 18:49
    #38894007
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Both of them giving errors.
MSDAORA may retrieve parameters but it fails on Execute step.
MSDASQL may not even retrieve parameters.

So your solution is not applicable. Check initial request once again.
...
Рейтинг: 0 / 0
03.03.2015, 20:00
    #38894038
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Может я тупой, но:
oCMD.CommandText = "{call tctdbs.test.CheckConnection(?,?,{resultset 0, aResult})}"

Где в данном анонимном PL/SQL блоке Вы увидели нижеследующие параметры? Ткните пальцем пожалуйста. Я таких буковок не вижу.
oCMD.Parameters(" aDateFrom ").Value = "111"
oCMD.Parameters(" aDateTo ").Value = "222"
...
Рейтинг: 0 / 0
04.03.2015, 10:41
    #38894337
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
А? Зачем та буковки то? Вы о чем вообще? Я же вызываю oCMD.Parameters.Refresh там все буковки САМИ вытягиваются.
...
Рейтинг: 0 / 0
04.03.2015, 14:35
    #38894642
фффф
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Петров АндрейА? Зачем та буковки то? Вы о чем вообще? Я же вызываю oCMD.Parameters.Refresh там все буковки САМИ вытягиваются.
IMHO
Откуда они должны "сами вытягиваться"?

Вы отдаете "запрос" (вызов call, но не суть важно), в запросе используются анонимные/позиционные bind-переменные (bind-parameters). То, где знаки вопроса. Т.ч. или используйте какие-то методы для "parameter by postition" (не знаю как это по русски) или именуйте bind-переменные (но вроде OraOLEDB named parameters не поддерживает).

Попытайтесь
cmd.Parameters.Append cmd.CreateParameter(...)

первый попавшийся пример:
http://answers.google.com/answers/threadview/id/42511.html

сам так не делал
===
p.s. http://support.microsoft.com/kb/KbView/240205 у меня не открывается ((( msdn открывается, а данная страница просто весит (((
возможно чушь написал
...
Рейтинг: 0 / 0
04.03.2015, 14:41
    #38894654
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
ффффIMHO
Откуда они должны "сами вытягиваться"?Можно было бы прочитать про Refresh, прежде чем возмущаться, зачем ИМХО, если есть справка?
ADO делает запрос к серверу и заполняет коллекцию параметров.
...
Рейтинг: 0 / 0
04.03.2015, 16:01
    #38894775
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
идите вы... лесом...
запустил VB, сейчас рабочей пример приведу... )))
...
Рейтинг: 0 / 0
04.03.2015, 16:53
    #38894844
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Признаю... Был не прав (((
...
Рейтинг: 0 / 0
06.03.2015, 14:02
    #38897210
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Коллеги, пример рабочий :-)
Вопрос в том что либо в каком то конкретном случае не хочет запускаться либо после перехода на 11 оракл клиент перестал это поддерживать в том виде котором работал на 9.

Как я понимаю идей нет?
...
Рейтинг: 0 / 0
06.03.2015, 14:49
    #38897277
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Хоть бы текст (заголовок) процедуры на Oracle привел
...
Рейтинг: 0 / 0
06.03.2015, 14:56
    #38897291
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Петров АндрейКак я понимаю идей нет?идея от майкрософта не устраивает? или боишься, что тормознее будет?
...
Рейтинг: 0 / 0
06.03.2015, 15:07
    #38897312
Refresh,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA Не найдено имя аргумента для процедуры PL/SQL
Петров АндрейКоллеги, пример рабочий :-)
Вопрос в том что либо в каком то конкретном случае не хочет запускаться либо после перехода на 11 оракл клиент перестал это поддерживать в том виде котором работал на 9.

Как я понимаю идей нет?
Была такая же проблема после перехода с МС СКЛ 2000 на МС СКЛ 2005 (причём с одной единственной инсталляцией 2005-го, сейчас тоже установлен 2005-ый, и всё с Refresh нормально)
Суть в том, что Refresh - не возвращал список параметров
Думаю, тут где-то есть и решение ...

Но главное не это
А чего ты вообще "вцепился" в этот Refresh ? была бы это какая-то универсальная процедура для запуска ХП, с произвольным кол-вом параметров - было бы понятно,
а тут ты йи-ёшь себе и людям голову с запуском конкретной ХП с наперёд известными параметрами !
так сделай как посоветовали ! - 17342396
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter(...)

и всё!
Заодно "выиграешь" на отсутствии запроса у сервера параметров, что и делает Refresh
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Не найдено имя аргумента для процедуры PL/SQL / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]