Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / опять параметры TADOStoredProc / 25 сообщений из 31, страница 1 из 2
14.03.2003, 13:52
    #32120137
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Добрый день!
Ситуация следующая:
MsSql 6.5, COM+(Delphi7).
Есть работающее приложение, в котором есть определенный в дизайн-тайме компонент TADOStoredProc, с кучей входных параметров и двумя выходными.
Так все работает отлично:
Код: plaintext
1.
2.
3.
4.
5.
      ....
      ADOStoredProc1.ExecProc;
      ....
      FNumber := ADOStoredProc1.Parameters.ParamValues['@Number'];
      Fid := ADOStoredProc1.Parameters.ParamValues['@id'];

Требуется добавить еще один выходной параметр (все параметры строковые), после добавления которого начинают творится следующие чудеса:
Код: plaintext
1.
2.
3.
4.
5.
6.
      ....
      ADOStoredProc1.ExecProc;
      ....
      FNumber := ADOStoredProc1.Parameters.ParamValues['@Number']; //  1 
      Fid := ADOStoredProc1.Parameters.ParamValues['@id']; //  2 
      FEMail := Parameters.ParamValues['@EMail']; //  3 

в строке 2 ADOStoredProc1 возвращает null (генерится ошибка),
в строке 3 ADOStoredProc1 возвращает значение параметра @Number(!)
в строке 1 возвращается абсолютно левое значение.
причем в query anilyzer все работает как надо - все параметры на своих местах..
пересоздание ADOStoredProc1 ничего не дает - глюк остается.
подскажите в чем тут может быть дело,
заранее спасибо!
...
Рейтинг: 0 / 0
14.03.2003, 13:57
    #32120139
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
А параметры в дезайн тайм задаешь или нет.
...
Рейтинг: 0 / 0
14.03.2003, 13:59
    #32120143
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
параметры задаются в дизайн-тайме, а их значения в ран-тайме
...
Рейтинг: 0 / 0
14.03.2003, 14:01
    #32120147
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Профайлером вызов смотрел, все ли правильно уходит с клиента.
...
Рейтинг: 0 / 0
14.03.2003, 14:18
    #32120168
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
да, в профайлере все верно, делал Ctrl-C Ctrl-V в query anilyzer - все ок
...
Рейтинг: 0 / 0
14.03.2003, 14:22
    #32120172
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Чудеса прям. Ну а в рантайм попробуй перед заданием параметрам значений сделать Refresh для коллекции параметров. И ничего у тебя там, ну где три точечки, больше не делается между ЕхесProc и чтением значений параметров.
...
Рейтинг: 0 / 0
14.03.2003, 14:26
    #32120181
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
там где три точки я комментарил - глюки остаются, попробую Refresh
...
Рейтинг: 0 / 0
14.03.2003, 15:00
    #32120225
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Код: plaintext
1.
FEMail := Parameters.ParamValues['@EMail']; //  3 

не указано ADOStoredProc1. Может здесь что-то зарыто?
...
Рейтинг: 0 / 0
14.03.2003, 15:24
    #32120260
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
да нет :-), это я тут просто добавть забыл, у меня в коде
with ADOStoredProc1 do begin
то все внутри
end;
...
Рейтинг: 0 / 0
14.03.2003, 15:26
    #32120263
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Процедуру можешь показать?
...
Рейтинг: 0 / 0
14.03.2003, 15:26
    #32120266
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
как увеличивал количество параметров - руками? или обновил все данные по процедуре? (т.е. выбрал заново ее - параметры должны автоматом встать)
...
Рейтинг: 0 / 0
14.03.2003, 15:30
    #32120273
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
так то она здоровая, в принципе могу только нужные места вырезать, но есть ли смысл - она точно работает, я в query anilyzer проверял.
...
Рейтинг: 0 / 0
14.03.2003, 15:32
    #32120277
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
to AVL: обновлял автоматом, т.е. выбрал по новой процедуру;
также грохал ADOStoredProc1 и создавал заново для обновленной процедуры - все-равно глюки остаются.
...
Рейтинг: 0 / 0
14.03.2003, 15:32
    #32120278
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Може и зря я это спросил, но хоть как параметры объявлены покажи и где выходным значения присваиваешь.
...
Рейтинг: 0 / 0
14.03.2003, 15:36
    #32120282
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
можно по-пробывать АДОКомманд или АДОквери. Если не получится, то глюк, если получится - то какая-то путаница(не ту процедуру выбираешь, не на том сервере, не того оунера и т.д.)
...
Рейтинг: 0 / 0
14.03.2003, 15:42
    #32120287
_Александр_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
А если этот третий параметр убрать, что - опять все нормально?
...
Рейтинг: 0 / 0
14.03.2003, 15:42
    #32120289
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE PROCEDURE MyProc
....
@Number VarChar( 10 ) =null output,
....
@id Char( 8 ) = null output,
....
@EMail VarChar( 254 ) = null output,
....
AS
set nocount on
....

set @Number=''
set @id=''
set @EMail=''
....
 -- получаем следующий номер
 
update Parameters set @Number=Value, Value=case when CONVERT(int, Value)>= 999  then '1' else CONVERT(VarChar, CONVERT(int, Value)+ 1 ) end where Name='LastNumber'
....
 -- Здесь идут вызовы с другого сервака
 
    select @SQLcmd=@ServerName+'.'+@DataBaseName+'.dbo.MyProc2'
    exec @Ret=@SQLcmd
        ....
	@Number=@Number,
	....

    select @SQLcmd=@ServerName+'.'+@DataBaseName+'.dbo.MyProc3'
    exec @Ret=@SQLcmd @EMail output
    if @EMail is null
      set @EMail=''
....
...
Рейтинг: 0 / 0
14.03.2003, 15:44
    #32120291
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Блин, вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE PROCEDURE MyProc
....
@Number VarChar( 10 ) =null output,
....
@id Char( 8 ) = null output,
....
@EMail VarChar( 254 ) = null output,
....
AS
set nocount on
....

set @Number=''
set @id=''
set @EMail=''
....
 -- получаем следующий номер
 
update Parameters set @Number=Value, Value=case when CONVERT(int, Value)>= 999  then '1' else CONVERT(VarChar, CONVERT(int, Value)+ 1 ) end where Name='LastNumber'
....
 -- Здесь идут вызовы с другого сервака
 
    select @SQLcmd=@ServerName+'.'+@DataBaseName+'.dbo.MyProc2'
    exec @Ret=@SQLcmd
        ....
	@id=@id output,
	....

    select @SQLcmd=@ServerName+'.'+@DataBaseName+'.dbo.MyProc3'
    exec @Ret=@SQLcmd @EMail output
    if @EMail is null
      set @EMail=''
....
...
Рейтинг: 0 / 0
14.03.2003, 15:46
    #32120294
_Александр_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
А что такое

@Number=@Number
...
Рейтинг: 0 / 0
14.03.2003, 15:47
    #32120298
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
to _Александр_:
если его убрать только в дельфе, а в процедуре оставить - глюки продолжаются, а если убрать и из ХП - все работает ок
...
Рейтинг: 0 / 0
14.03.2003, 15:48
    #32120301
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Слушай, тут на форуме по SQL Server проскакивал топик про проблемы вызова ХП на линкед серверах. Может это каким-нибудь боком влияет.
...
Рейтинг: 0 / 0
14.03.2003, 15:48
    #32120303
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
to _Александр_:
второй вариант процедуры правильный
...
Рейтинг: 0 / 0
14.03.2003, 15:52
    #32120308
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
помоему проблема тут не в SQL Server, .. сам то запрос ведь нормально выполняется, тут что-то должно быть с TADOStoredProc не ладно, хотя про линкеды тоже посмотрю
...
Рейтинг: 0 / 0
14.03.2003, 15:56
    #32120315
alex_j
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
to _Александр_
Код: plaintext
1.
2.
3.
4.
5.
6.
    select @SQLcmd=@ServerName+'.'+@DataBaseName+'.dbo.MyProc2'
    exec @Ret=@SQLcmd
          ....
          @id=@id output,  -- часть списка параметров вызываемой процедуры
 
          ....
...
Рейтинг: 0 / 0
14.03.2003, 16:00
    #32120323
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
опять параметры TADOStoredProc
Я не написал, что проблемы были именно привызове через TADOStoredProc. Но там явно вызывалась процедура с удаленного сервера, а у тебя внутри вызов. Может это к делу и не относиться. А в своей проге ты SETов ни каких не устанавливаешь. Бредовая конечно мысль, но просто мыслей больше нет.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / опять параметры TADOStoredProc / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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