Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Привет всем !

Дано : Есть приложение писанное на дельфях и работающее на виндах через ODBC с базой Informix 7.31.UC7 под SCO OpenServer 5.0.7. Исходников нет.

Задача : Перенести базу под линукс.

Поставил Informix 9.40.UC6 под линукс. Сделал текстовый дамп/лоад . Пытаюсь работать этим приложением с базой уже на линуксе. Многое работает, но при попытке вызвать некоторые менюшки выпадает окно с ошибкой :

[Informix][Informix ODBC Driver][Informix]Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.


Сама процедура такова:
CREATE PROCEDURE "informix".ps_todayvoucher0(psVoucherDef char(6))

  update ctrlUpdateInfo set TimeRead=current
    where UserNumber in (select UserNum from tmpUserNum) and (Table_ID='voucher');
end procedure
;

Пробовал ставить разные ODBC дрова - 2.60 , 2.70 , 2.81TC3 (идут в дистрибе с 9.40.UC6) - безрезультатно.

Помогите чем сможете люди добрые ;))
23 дек 08, 16:16    [6609196]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
прав у пользователя может нету.

На старом сервере тоже informix владелец процедуры был?

google: NODEFDAC

Сообщение было отредактировано: 23 дек 08, 16:29
23 дек 08, 16:28    [6609285]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
defocus
Сделал текстовый дамп/лоад .

Поясните подробнеее - что вы сделали и как.
defocus
Пробовал ставить разные ODBC дрова - 2.60 , 2.70 , 2.81TC3 (идут в дистрибе с 9.40.UC6) - безрезультатно.

Попробуйте установить такую же версию ODBC , которая работала ранее с 7.31
Но мне, почему то, кажется, что проблема не в драйвере...
Другие процедуры работают ?
23 дек 08, 16:32    [6609320]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Да.
Права есть. Захожу под informix.
23 дек 08, 16:33    [6609324]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Ikir
Member

Откуда:
Сообщений: 271
слова - can not be resolved скорее говорят о том, что в приложении вызов процедуры делается с явным указанием владельца, а сейчас владельцы не совпадают.
В ODBC можно указать trace и посмотреть какой вызов идет.
23 дек 08, 16:38    [6609368]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Сделал текстовый дамп/лоад из под informix :
На OpenServer :
dbexport database_name -o /backup/dump
На Linux :
dbimport database_name -d maindbs -i /backup/dump

ODBC : С любой из перечисленных версий не работает. На OpenServer работает с любой из перечисленных.

Другие процедуры работают.
23 дек 08, 16:39    [6609385]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
lkir
В ODBC можно указать trace и посмотреть какой вызов идет.

Сорри за тупость, а как это сделать ?
23 дек 08, 16:43    [6609423]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
lkir
слова - can not be resolved скорее говорят о том, что в приложении вызов процедуры делается с явным указанием владельца, а сейчас владельцы не совпадают.

Вот из dbexport.out :
grant  execute on "informix".ps_todayvoucher0 to "public" as "informix";
23 дек 08, 16:48    [6609457]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Ikir
Member

Откуда:
Сообщений: 271
defocus
lkir
В ODBC можно указать trace и посмотреть какой вызов идет.

Сорри за тупость, а как это сделать ?


Запустить ODBC Data Source Administrator - там есть вкладка Tracing.
23 дек 08, 16:49    [6609464]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Журавлев Денис
google: NODEFDAC

Попробую завтра. Спасибо.
23 дек 08, 16:51    [6609484]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
defocus,

А зачем там параметр psVoucherDef char(6) внутри нигде не используется. Может у вас две процедуры с одинаковым именем?
23 дек 08, 16:52    [6609502]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Ikir, Попробую завтра потрэйсить, спасибо !
23 дек 08, 16:52    [6609504]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Журавлев Денис
defocus,

А зачем там параметр psVoucherDef char(6) внутри нигде не используется. Может у вас две процедуры с одинаковым именем?


Чесно говоря не знаю зачем ;( я в этом не силен, но двух процедур с одинаковым именем нет.
23 дек 08, 16:56    [6609548]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Тан
Member

Откуда: Череповец
Сообщений: 349
defocus
Журавлев Денис
defocus,

А зачем там параметр psVoucherDef char(6) внутри нигде не используется. Может у вас две процедуры с одинаковым именем?


Чесно говоря не знаю зачем ;( я в этом не силен, но двух процедур с одинаковым именем нет.

в версии 9.40.UC6 процедуры идентифицируются именем и типом параметров
наверное, приложение передает параметры несоответствующих типов
ODBC Tracing поможет посмотреть какие
и потом можно создать еще одну процедуру с тем же названием с нужными типами параметров
24 дек 08, 09:37    [6611400]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
Daugava
Member

Откуда: Riga-Kiev-Gurzuf
Сообщений: 718
+100 к мнению Тан. Забыл вчера отписаться, проблема наверняка именно в этом.
24 дек 08, 10:02    [6611488]     Ответить | Цитировать Сообщить модератору
 Re: Routine (ps_todayvoucher0) can not be resolved. ODBC State = S1000.  [new]
defocus
Member

Откуда: Москва
Сообщений: 90
Потрэйсил ODBC :
PROG           11fc-f00        EXIT  SQLAllocStmt  with return code 0 (SQL_SUCCESS)
                HDBC                020A1868
                HSTMT *             0x0221EC60 ( 0x020a2690)

PROG           11fc-f00        ENTER SQLPrepare
                HSTMT               020A2690
                UCHAR *             0x0221B734 [      -3] "EXECUTE PROCEDURE ps_TodayVoucher0()\ d\ a\ 0"
                SDWORD                    -3

PROG           11fc-f00        EXIT  SQLPrepare  with return code -1 (SQL_ERROR)
                HSTMT               020A2690
                UCHAR *             0x0221B734 [      -3] "EXECUTE PROCEDURE ps_TodayVoucher0()\ d\ a\ 0"
                SDWORD                    -3

                DIAG [S1000] [Informix][Informix ODBC Driver][Informix]Routine (ps_todayvoucher0) can not be resolved.  (-674)

Ну натурально ! Вызов ps_TodayVoucher0() с пустым аргументом. Так что для меня самый безопасный вариант - завести еще одну функцию ps_TodayVoucher0() с пустым аргументом

ОООООГРОМНОЕЕЕЕЕЕЕЕЕ СПАСИБО ВСЕМ !!!
:)
14 янв 09, 10:36    [6682547]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить