Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в строке ХП / 17 сообщений из 17, страница 1 из 1
10.08.2004, 15:29:04
    #32642933
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Помогите исправить, ругается на =
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff hour,getdate,Pay_history.date_pay)> 120 )) then avrd=true else avrd=false
...
Рейтинг: 0 / 0
10.08.2004, 15:30:33
    #32642939
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Сорри, ещё раз
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff(hour,getdate,Pay_history.date_pay)> 120 )) then avrd=true else avrd=false
...
Рейтинг: 0 / 0
10.08.2004, 15:59:50
    #32643022
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
case when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then avrd= 1 else avrd= 0 end
...
Рейтинг: 0 / 0
10.08.2004, 16:01:13
    #32643025
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
paparomecase when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then avrd= 1 else avrd= 0 end

тьфу - сам запутался
avrd = case when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then 1 else 0 end
...
Рейтинг: 0 / 0
10.08.2004, 16:07:47
    #32643037
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Спасибо уже исправил
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff(hour,getdate(),Pay_history.date_pay)> 120 )) then  'true' else 'false' end as avrd, 
есть другой вопрос, почему такая ХП работает 10 сек
Код: 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.
ALTER PROCEDURE dbo.ADV_report_otch
                      @id_pay int
AS
SET NOCOUNT ON
SELECT Base_plat.end_plat, Base_plat.Kurator, Base_plat.Nplat, Base_plat.Date_time, Base_plat.Who_pay, Base_plat.To_whom_pay, 
Base_plat.Document, Base_plat.Payment_form, Base_plat.Cost_center, Base_plat.Project, Base_plat.Phase, 
Base_plat.Account, Base_plat.Nomen, Base_plat.Sum, Base_plat.Currency, 
Base_plat.Prim, Base_plat.Declarant, Base_plat.Boss, Base_plat.Need_yes, Base_plat.Klass_corr_yes, Base_plat.Budget_yes, 
Base_plat.Doc_yes, Base_plat.Strategy_yes, Base_plat.Security_yes, Base_plat.OK, Plat.Plat, Etap.Etap, CFU.ЦФУ, CFO.CFO_name, 
Stati_sokr.Statya, Nomen.Nomenkl, Base_plat.Plat_vid, Base_plat.Otkl, Base_plat.Overdue, Base_plat.Kurr_OK, Base_plat.Opl_flag,
Base_plat.Opl_date, Base_plat.Ost_pay, Contract_main.N_contr, Nomenclator_job_and_st.Nom_code, Pay_history.Payed, 
Pay_history.Otchet, Pay_history.Vozvrat, Pay_history.RSCH_pay, OTVETSTVENNIE.Who_make_rep, Pay_history.Who_get, 
Pay_history.Nplat_CR, Pay_history.Date_pay,Pay_history.Npp, Pay_history.Sum_pay, Pay_history.Currency_pay, Base_plat.Contract_for_pay, Base_plat.Pay_type, 
Base_plat.Id_doc_contr, Base_plat.Type_doc_of_contr,case when ((otchet= 0 ) And (DateDiff(hour,getdate(),Pay_history.date_pay)> 120 )) then  'true' else 'false' end as avrd, 
ADV_Report.Id_pay, ADV_Report.Date_adv, ADV_Report.Type_N_doc_adv, 
ADV_Report.Describe_adv, ADV_Report.Sum_adv, ADV_Report.Curr_adv, ADV_Report.Date_time_add_adv, Stati_sokr.StatyaCod, 
ADV_Report.Curr_rate_adv, Base_plat.Budget_row
FROM (OTVETSTVENNIE RIGHT JOIN ((Nomenclator_job_and_st RIGHT JOIN (Contract_main RIGHT JOIN ((((Etap RIGHT JOIN
((Plat RIGHT JOIN Base_plat ON Plat.Pay_code = Base_plat.Who_pay) 
LEFT JOIN CFU ON Base_plat.Project = CFU.Новый_Код) ON Etap.Kod_et = Base_plat.Phase) 
LEFT JOIN CFO ON Base_plat.Cost_center = CFO.CFO_code) 
LEFT JOIN Nomen ON Base_plat.Nomen = Nomen.Npp) LEFT JOIN Stati_sokr ON Base_plat.Account = Stati_sokr.StatyaCod) 
ON Contract_main.ID_contr = Base_plat.Contract_for_pay) 
ON Nomenclator_job_and_st.Id_nom = Nomen.Nomenkl) RIGHT JOIN Pay_history ON Base_plat.Nplat = Pay_history.Nplat_CR) 
ON OTVETSTVENNIE.FIO = Pay_history.Who_get) RIGHT JOIN ADV_Report ON Pay_history.Npp = ADV_Report.Id_pay
WHERE ADV_Report.Id_pay=@Id_pay
order by base_plat.nplat
	RETURN 
а запрос в Аксе 1 сек.
Почему?
...
Рейтинг: 0 / 0
10.08.2004, 16:14:39
    #32643055
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
2 Proga
Запрос в Аксе к данным на сервере одну секунду, а на самом сервере 10 секунд?
Никогда не поверю:)

Смотреть надо план запроса, где затык, но такое смешение джойнов и подзапросов....
...
Рейтинг: 0 / 0
10.08.2004, 16:15:39
    #32643060
план
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
сервер когда - нибудь выключается?

скорее всего утсаревший план исполнения. перекомпилируй процедуру.
...
Рейтинг: 0 / 0
10.08.2004, 16:21:02
    #32643074
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Что значит устаревший, я её(ХП) только что написал.
...
Рейтинг: 0 / 0
10.08.2004, 16:23:01
    #32643079
запуск
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
ProgaЧто значит устаревший, я её(ХП) только что написал.
сделать два запуска.
после второго запуска время какое - тоже 10?
...
Рейтинг: 0 / 0
10.08.2004, 16:27:47
    #32643092
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Попробовал, Всё те же 10сек
...
Рейтинг: 0 / 0
10.08.2004, 16:28:17
    #32643095
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
И, ваще, эти 10 сек у тебя в QA получились или это ты около Акса с секундомером сидел?
...
Рейтинг: 0 / 0
10.08.2004, 16:32:36
    #32643111
вариант
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
значит, все-таки план РАЗНЫЙ.
скорее всего виноват параметр в Where - из-за него где-нибудь идет отказ от использования индексного поиска.
как вариант -замени "прямой" селект в процедуре на sp_executesql - должен бы приблизиться к QA
...
Рейтинг: 0 / 0
10.08.2004, 16:35:58
    #32643120
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
2 paparome: Вообще-то в QA есть секундомер.
...
Рейтинг: 0 / 0
10.08.2004, 16:43:55
    #32643138
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
MSSQL случаем не на том же компе, где и аксес?
И память, поди, автоматом?
...
Рейтинг: 0 / 0
10.08.2004, 16:49:03
    #32643155
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
SQL server, на другой мощной машине, а что понимается под "память автоматом"
...
Рейтинг: 0 / 0
10.08.2004, 16:56:37
    #32643173
попробуй
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
попробуй закомментировать строку
SET NOCOUNT ON
и
удери ордер бай

изменится ли время выполнения хранимой процедуры?


что там с индексами по base_plat.nplat и ADV_Report.Id_pay?
...
Рейтинг: 0 / 0
10.08.2004, 17:19:12
    #32643232
Proga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в строке ХП
Проиндексировал поле ID_pay, всё летает, спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в строке ХП / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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