![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO (странное поведение) [D5, MSSQL]
PSV © (2008-06-19 15:44:00)Здравствуйте. Вопрс в следующем: на MSSQL есть процедура, которую выполняю посредством компонентов ADO (Delphi5). На выполнение требуется максимум 6 сек. Процедура возвращает набор данных. На этапе разработки (Active:=True) отрабатывает нормально. При запуске программы выдает ошибку commandtext does not return result set. Использовал по очереди компоненты TADOQuery, TADOStoredProc,TADoDataSet. Результат-та же ошибка. Запрос перехваченный трассировщиком и запущенный на MSSQL возвращает данные. Урезал процедуру до минимума - выдает не те данные но быстро - около 1 сек. В этом случае все работает - но результаты не те. Впечатление будто если процедура не вложилась в секунду то все. Подскажите как быть.
PSV (2008-06-20 12:49:00) [1]строка, отображаемая в профайлере:
exec sp_executesql N'exec ot_ARM @P1
', N'@P1 datetime', 'Jun 20 2008 12:00:00:000AM'
строка SET NOCOUNT ON , добавленная в процедуру - помогла.
всем откликнувшимся большое спасибо!
Ega23 (2008-06-20 10:54:00) [2]
> SET NOCOUNT ON поставь в процедуре.
Кстати да, у тебя же там Update есть...
stud (2008-06-20 10:53:00) [3]а чему равно значение параметра- даты, при перехвате запроса через профайлер?
ЮЮ (2008-06-20 04:41:00) [4]> ADO (Delphi5)
Древнее Delphi не нашел? Update для ADO установлен?
SET NOCOUNT ON поставь в процедуре.
PSV (2008-06-19 18:02:00) [5]Дело даже не во времени выполнения процедуры. После того, как я убрал создание временной таблицы и цикл, но удлинил время выполнения процедуры путем выполнения 'левых' запросов до 9 сек. она отрабатывает с программы.
PSV (2008-06-19 17:42:00) [6]в Query Analyzer через 1 сек. пустой результат ;с программы - та же ошибка ; из среды разработки как в Query Analyzer
Ega23 (2008-06-19 17:30:00) [7]
ALTER PROCEDURE ot_ARM(@FD datetime = 0)
Если так, то что?
PSV (2008-06-19 17:27:00) [8]30 (по умолчанию)
Ega23 (2008-06-19 17:26:00) [9]Чему равно значение TADOConnection.CommandTimeout на клиенте?
PSV (2008-06-19 17:23:00) [10]6 сек.
Ega23 (2008-06-19 17:13:00) [11]
> MSSQL 2000 MDAC 2.8 SP1
>
Сколько секунд идёт выполнение из Query Analyzer?
PSV (2008-06-19 17:06:00) [12]MSSQL 2000 MDAC 2.8 SP1
Ega23 (2008-06-19 16:55:00) [13]
> Это MSSQL 2005 ?
На каком основании Вы так думаете и какое это имеет значение?
stas (2008-06-19 16:33:00) [14]Это MSSQL 2005 ?
какая версия MDAC? попробуйте подключится через Native Client
Ega23 (2008-06-19 16:31:00) [15]и сколько этот ужос из QA выполняется?
PSV (2008-06-19 16:27:00) [16]1.Процедура возвращает данные о всех работников предприятия
Состоит из запроса в несколько таблиц и изменения последней даты перемещения на первую дату перемещения на данную профессию.
ALTER PROCEDURE ot_ARM(@FD datetime)
AS
Select
r.TabN
,Famil+' '+Imya+' '+Otchectv as F
,Mug_Gen
,convert(varchar(10),convert(datetime,Dat_rogd),104) as DR--'Дата рожд.'
,f.Name+' '+isnull(r.Razr,'') as PR--'Профессия'
,d.Name as PD--'Подразделение'
,Tel --as 'Телефон'
,p.Iden_kod --as 'Иден.код'
isnull(ltrim(Obl+' '),'')+isnull(ltrim(Gorod+' '),'')+isnull(ltrim(Reg+' '),'')+
isnull(ltrim(Der+' '),'')+isnull(ltrim(Ul+' '),'')+
isnull(Dom+' ','')+isnull(ltrim(Korp+' '),'')+isnull(Kv,'') as ADR--'Адрес'
,convert(varchar(10),convert(datetime,ar.DFPer),104) DS--'Дата поступл.'
,convert(varchar(10),convert(datetime,r.DFPer),104) DD--as 'Дата перемещ.'
,r.KodProf,r.Razr,r.DFPer as DP
into #TMP
from
PersPeremNew ar
,Personal p
,PersData t
,PersPeremNew r
,Sperem rn
,SpodrN d
,SprofN f
where
ar.VidDog not in(3,5,7,8,6)
and ar.DFPer in(select Max(DFPer) from PersPeremNew where Iden_kod=p.Iden_kod and VidPer=1 and DFPer<=@FD) and ar.VidPer=1
and t.InsDate in(select Max(InsDate) from PersData where Iden_kod=p.Iden_kod and InsDate<=@FD)
and r.VidPer=rn.Id
and rn.PrCnst>=1
and r.DFPer in(select Max(DFPer) from PersPeremNew,Sperem where Iden_kod=p.Iden_kod and Id=VidPer and VidPer<>2 and PrCnst>=1 and DFPer<=@FD) and r.VidPer<>2
and d.KeyPodr=r.KodPodr
and f.KeyProf=r.KodProf
and ar.Iden_kod=p.Iden_kod
and ar.Iden_kod=t.Iden_kod
and ar.Iden_kod=r.Iden_kod
and
p.Iden_kod not in(select Iden_kod from PersPeremNew uv1 where VidPer=2 and DNDog=ar.DFPer and DFPer<=@FD)
order by Famil,FIO
while exists(
select t.Iden_kod from #tTMP t,
(select t.Iden_kod,max(DFPer)as DFP,DP
from PersPeremNew n,#tTMP t,Sperem where t.Iden_kod=n.Iden_kod and VidPer=Id and PrCnst=1
and DFPer<DP group by t.Iden_kod,DP)n,PersPeremNew m,Sperem
where t.Iden_kod=m.Iden_kod and t.Iden_kod=n.Iden_kod and m.VidPer=Id and PrCnst=1
and DFP=m.DFPer and m.KodProf=t.KodProf and isnull(m.Razr,'')=isnull(t.Razr,'')
)
update t set t.DP=DFP from #tTMP t,
(select t.Iden_kod,max(DFPer)as DFP,DP
from PersPeremNew n,#tTMP t,Sperem where t.Iden_kod=n.Iden_kod and VidPer=Id and PrCnst=1
and DFPer<DP group by t.Iden_kod,DP)n,PersPeremNew m,Sperem
where t.Iden_kod=m.Iden_kod and t.Iden_kod=n.Iden_kod and m.VidPer=Id and PrCnst=1
and DFP=m.DFPer and m.KodProf=t.KodProf and isnull(m.Razr,'')=isnull(t.Razr,'')
select TabN as 'Таб.№',F as 'ФИО',Mug_Gen as 'Пол',DR as 'Дата рожд.',PR as 'Профессия',
PD as 'Подразделение',Tel as 'Телефон',Iden_kod as 'Иден.код',ADR as 'Адрес',
DS as 'Дата поступл.',convert(varchar(10),convert(datetime,DP),104) as 'Дата перемещ.' from #tTMP
order by F
GO
2. ADOQuery.SQL ot_ARM :Dt
MsGuns (2008-06-19 16:06:00) [17]Код запуска в делфи и текст хранимки сюда
stas (2008-06-19 16:06:00) [18]1. Как вызываете процедуру
2. Покажите текст процедуры