STRIGANOV SERGEY: Software development.

Разработка программного обеспечения на: C++, T-SQL, VBS, JavaScript, PHP

VBS, OraOLEDB.Oracle.1::ORA-06550::Windows 2003 Server 64 bit

Вот такой случай произошел:
Перенес на другую машину   - с WindowsXP 32 bit на Windows 2003 Server 64 bit
VBS скрипт, который подключается к Oracle и кое-что делает :) 

Выполняю первый запуск, и сразу получаю в ответ:
 "Ошибка подключения к БД:  Не удается найти указанного поставщика. Вероятно, он установлен неправильно." 

При этом строка подключения выглядела так:
"Provider=MSDAORA.1;Password=xxx;User ID=yyy;Data Source=ffff;Persist Security Info=True"

Ладно, меняю провайдера на "Provider=OraOLEDB.Oracle.1;"

Делаю запуск - работает !
Но через некоторое время получаю: 

Ошибка выполнения SQL: ORA-06550: Строка 1, столбец 7:
PLS-00306: ошибочно число или типы аргументов при обращении к ' SYS_INFORMER_LIST_GET'
ORA-06550: Строка 1, столбец 7:
PL/SQL: Statement ignored OraOLEDB

Скрипт по ходу своей работы дошел до вызова хранимой процедуры
begin SYS_INFORMER_LIST_GET('6890'); end;
а надо сказать, что процедура эта должна возвращать набор данных, 
и поэтому имеет  возвращаемый параметр  p_cursor OUT SYS_REFCURSOR
а в теле процедуры есть такой код: 

open p_cursor FOR  select ....

Вызовы других функций (которые не имеют возвращаемого курсора) прошли успешно,
а на этой процедуре - все сломалось.

Что же делать ?
Как потом выяснилось - вот что:
возвращаем провайдера на место - снова используем  "Provider=MSDAORA.1;"
а запуск скрипта делаем такой:
C:\WINDOWS\SysWOW64\wscript.exe "C:\VBS\MyOracleInformer.vbs"
И все работает как и прежде (как на WindowsXP 32 bit). 
Без ошибок.

Add comment