Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) : / 10 сообщений из 10, страница 1 из 1
26.11.2004, 13:37
    #32801436
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
В общем вот такой код есть :( И таких ХП в системе кучи. Интересно, их руками писали или генерируется каким продуктом разработки? И вообще может ли что то подобное генерится автоматом?

Код: 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
27.11.2004, 16:31
    #32802555
StalkerS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
да, особенно коментарии совершенно без проблем генерируются автоматически
...
Рейтинг: 0 / 0
29.11.2004, 10:30
    #32803296
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
ИМХО ручками, т.к. зачем генератор будет выводить заблокированный комментариями код , причем фрагментами?
Кроме того, правильный генератор сделал бы костанты переменными, чтобы можно было легко управлять логикой, а не вставлял в тескт абсолютные значения.
...
Рейтинг: 0 / 0
29.11.2004, 12:31
    #32803713
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посмотрите плз код для MSSQL, он сгенерирован чем то или написан руками :) :
>ИМХО ручками, т.к. зачем генератор будет выводить заблокированный комментариями код ,
> причем фрагментами?
ну, никто не мешает ручками зарэмить...

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

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

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

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

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

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



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


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