powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
10 сообщений из 10, страница 1 из 1
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32801436
В общем вот такой код есть :( И таких ХП в системе кучи. Интересно, их руками писали или генерируется каким продуктом разработки? И вообще может ли что то подобное генерится автоматом?

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
/***********************************************************************
    ProductName = СуперХП
    Version = 0.0.0.0
    CompanyName = "Рога и копыта"
    LegalCopyright = © Рога и копыта, 2003
    ProcedureName = sp_stGetDistribByWeekDays
    Description = Возвращает распределение интервалов
   простоя по дням  недели с учетом указанного интервала
***********************************************************************/
CREATE PROCEDURE [dbo].[sp_stGetDistribByWeekDays] 

-- Входные параметры - ModuleId и время начало/конец интервала
@ModuleId int,
@startdt datetime,
@enddt datetime = NULL

AS

set dateformat dmy
set @enddt = isNull(@enddt, GETUTCDATE())
declare @Hcount integer, @HStart integer, @i int
declare @res table(dw int, c int)
set @i= 1 
while @i< 8  begin 
 insert into @res(dw,c) values (@i, 0 )
 set @i=@i+ 1 
end

declare @tmpdt1 datetime, @tmpdt2 datetime, @ii int, @cc int
-- переведем время в локальное 
declare @LTable table(id int identity, IdleTimeStart datetime,IdleTimeEnd datetime)
insert into @LTable(IdleTimeStart,IdleTimeEnd)
select IdleTimeStart,IdleTimeEnd from OIKArch..S_StatInfResults where ModuleId = @ModuleId
--select * from @LTable
set @ii= 1 
select @cc=max(ID) from @LTable
while @ii<=@cc begin
 select @tmpdt1=IdleTimeStart, @tmpdt2=IdleTimeEnd from @LTable where ID=@ii
 exec OIKARCH..OutputGMTToLocalTime @ReturnDT=@tmpdt1 output
 if @tmpdt2 is not null exec OIKARCH..OutputGMTToLocalTime @ReturnDT=@tmpdt2 output
 update @LTable set IdleTimeStart=@tmpdt1 ,IdleTimeEnd=@tmpdt2 where ID=@ii
 set @ii=@ii+ 1 
end
--select * from @LTable -- получили туже же таблицу с локальным временем
-- заданный интервал переведем тоже в локальное время 
exec OIKARCH..OutputGMTToLocalTime @ReturnDT=@startdt output
exec OIKARCH..OutputGMTToLocalTime @ReturnDT=@enddt output
--select @startdt,@enddt

declare curr cursor  for 
Select HStart = DATEPART(dw,CASE when (IdleTimeStart < @startdt AND isNull(IdleTimeEnd,@enddt) > @startdt) then @startdt else IdleTimeStart END), 
HCount = (DATEDIFF(d,
CASE when (IdleTimeStart < @startdt AND isNull(IdleTimeEnd,@enddt) > @startdt) then @startdt else IdleTimeStart END,
CASE when (IdleTimeStart < @enddt AND isNull(IdleTimeEnd,@enddt) > @enddt) then @enddt else isNull(IdleTimeEnd,@enddt) END )) 
--  from OIKArch..S_StatInfResults where ModuleId = @ModuleId AND isNull(IdleTimeEnd,@enddt) > @startdt  AND IdleTimeStart < @enddt
 from @LTable where  isNull(IdleTimeEnd,@enddt) > @startdt  AND IdleTimeStart < @enddt

open curr
FETCH NEXT FROM curr INTO @HStart, @Hcount
WHILE @@FETCH_STATUS= 0  begin
update @res set c=c+ 1  where dw=@HStart
   while @Hcount> 0  begin
    set @HStart=@HStart+ 1 
    if @HStart> 7  set @HStart= 0 
    update @res set c=c+ 1  where dw=@HStart
    set @Hcount=@Hcount- 1 
   end
   FETCH NEXT FROM curr INTO @HStart, @Hcount
end
Close curr
DEALLOCATE curr
select * from @res

GO

...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32802555
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, особенно коментарии совершенно без проблем генерируются автоматически
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32803296
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО ручками, т.к. зачем генератор будет выводить заблокированный комментариями код , причем фрагментами?
Кроме того, правильный генератор сделал бы костанты переменными, чтобы можно было легко управлять логикой, а не вставлял в тескт абсолютные значения.
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32803713
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ИМХО ручками, т.к. зачем генератор будет выводить заблокированный комментариями код ,
> причем фрагментами?
ну, никто не мешает ручками зарэмить...

>Кроме того, правильный генератор сделал бы костанты переменными, чтобы можно было
>легко управлять логикой, а не вставлял в тескт абсолютные значения.
а ой не факт.... со значениями то план запроса получается куда лучше, чем с переменными....

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32803792
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 locky
1. Если лезть ручками в сгенерированный код, то очень большая вероятность того, что генератор используют еще раз и все изменения, внесенные вручную, будут потеряны.

2. Согласен, конечно, но я говорил об управляемости, а не оптимальности.
А в общем, второй мой посыл действительно спорный, признаю.
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32803823
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писалось однозначно руками ИМХО, а затем обработано парсером для формирования отступов, правильных регистров у зарезерв. слов. и пр.
Хотя судя по "@ii<=@cc" и "IdleTimeStart < @startdt" просто аккуратно писали без парсера.... :)

А вот зачем такое спрашивать - неясно ... :(
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32804078
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO писал руками товарищь, просто наверное он хороший программист, написано все аккуратненько.
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32804337
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1. Если лезть ручками в сгенерированный код, то очень большая вероятность того, что
>генератор используют еще раз и все изменения, внесенные вручную, будут потеряны.
Само собой. Однако я в процессе отладки нередко так делаю. Главное, не забыть потом перегенерить и проверить :-)

А ваще, откуда такая проца и почему такой вопрос то? из чистого любопытства?

2LSV
парсером? а ссылочку можно? а он с исходниками ? :-) Хочется очень.



Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32805463
Дмитрий Валуев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слишком замысловато.Вполне можно было обойтись без курсоров и временных таблиц.
...
Рейтинг: 0 / 0
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
    #32842619
E_g_o_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сгенерить можно все что угодно. Я ErWinом и не такой код генерю. Для табличек UDP расставить можно на генераторы и пр., а на остальное шаблончик с макросами)))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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