Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 22:34   #11
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
Пусть начинает с передачи серверу ТЕКСТОВОГО SQL-запроса: так, по крайней мере, ему не надо будет сразу углубляться в написание процедур БД и изучатьTransact-SQL или процедурный язык другой СУБД.
А при "ТЕКСТОВОГО SQL" сталобыть изучать диалект конкретной субд ненадо?
=master= вне форума Ответить с цитированием
Старый 22.05.2012, 01:02   #12
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

Надо. Но не надо пока изучать процедурный язык. Читайте всё, что написано, а не выборочно, с целью прицепиться! Я это за Вами уже заметил, и не я один.
Гаврилов вне форума Ответить с цитированием
Старый 22.05.2012, 10:49   #13
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
Но не надо пока изучать процедурный язык.
А что это?
=master= вне форума Ответить с цитированием
Старый 22.05.2012, 13:43   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от =master=
А что это?
шутить изволите?!
Это тот язык, на котором Вы пишете хранимые процедуры.
Для MS SQL он называется Transact SQL

выглядит это, например, так:
Код:
USE [MAINDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:       <Ivanov>
-- Create date: 24.09.2008
-- Description: Получить количество расчётных дней от даты @pd1 до даты @pd2 по ФЛ
--   (расчётных дней, когда статус клиента @d_org_id был нормальный (т.е. не было записей в D_STATUS)
--   
-- =============================================
ALTER FUNCTION [dbo].[GetDORGNormalStatusDays](@d_org_id bigint, @pd1 datetime, @pd2 datetime)
RETURNS numeric(5)
AS
BEGIN

   if @pd2 < @pd1
        return 0

   declare @dt_status TABLE
     (    d_status_id bigint not null,
          status_date_beg date not null,
          status_date_end date null  )

    Declare @ResultDays numeric(5)
    Declare @CountStatus numeric(5)
    Declare @dCur date
    
    set @ResultDays = 0
    
        
    INSERT INTO @dt_status 
                SELECT 
                        s.D_STATUS_ID,
                        s.STATUS_DATE_BEG,
                        s.STATUS_DATE_END
        FROM dbo.D_STATUS s
              where 
                s.D_ORG_ID = @d_org_id
                and 
                 (@pd1 between s.status_date_beg and coalesce(s.status_date_end, @pd1)
                 or @pd2 between s.status_date_beg and coalesce(s.status_date_end, @pd2)
                 or s.status_date_beg between @pd1 and @pd2)
    
        
        SELECT @CountStatus = COUNT(*) from @dt_status 
        
        if @CountStatus is null
           set @CountStatus = 0
           
        if @CountStatus = 0
        begin
           set @ResultDays = DATEDIFF(day, @pd1, @pd2 ) + 1
           Return @ResultDays 
        end
        
        set @dCur = @pd1
        
        While  (@dCur <= @pd2)
          begin     
            
            if NOT EXISTS(select count(*) from @dt_status s
                       where (@pd1 between s.status_date_beg and coalesce(s.status_date_end, @pd1)
                 or @pd2 between s.status_date_beg and coalesce(s.status_date_end, @pd2)
                 or s.status_date_beg between @pd1 and @pd2))
            begin     
              set @ResultDays = @ResultDays + 1
            end  
            
            -- перейдём на следующую дату
            set @dCur = DATEADD(day, 1, @dCur)
          end

    RETURN @ResultDays  
END
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2012, 13:52   #15
Гаврилов
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 85
По умолчанию

Уважаемый Serge_Bliznykov!
Спасибо за поддержку, но, как говорят японцы, "не надо напрасно тратить цветы своей селезёнки", общаясь с =master=. Ему, видимо, делать нечего и он просто заполняет "эфир" по любому случаю и без. Я уже решил ему ни на что не отвечать, т.к. у меня-то как раз есть другие дела, более содержательные. Жаль только, что он сбивает с толку новичков.
Гаврилов вне форума Ответить с цитированием
Старый 22.05.2012, 14:04   #16
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
if @CountStatus is null
set @CountStatus = 0
Это что такое?
Вы этот код больше никому не показывайте...

Цитата:
Жаль только, что он сбивает с толку новичков
и это после ваших перлов.. смех в зале
=master= вне форума Ответить с цитированием
Старый 22.05.2012, 14:20   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от =master=
Это что такое?
Вы этот код больше никому не показывайте...
=master=, давайте мы с Вами обойдёмся без Ваших советов?!..

что-такое процедурный язык, надеюсь, понятно стало?..


Гаврилов, согласен.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2012, 14:25   #18
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
давайте мы с Вами обойдёмся без Ваших советов?!..
Ну тогда и без ваших кривых процедур хотелось бы, ок? а то как сказали выше "сбивает с толку новичков".
Цитата:
что-такое процедурный язык, надеюсь, понятно стало?..
нисколько...
=master= вне форума Ответить с цитированием
Старый 22.05.2012, 14:37   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от =master=
Ну тогда и без ваших кривых процедур хотелось бы, ок? а то как сказали выше "сбивает с толку новичков".
А что, вы хотите использовать эту процедуру??!!
Если у Вас хватит ума понять, что она (процедура) делает и как, и возникнет желание её использовать, то уж точно хватит, чтобы её поправить!
(по поводу её т.н. "кривизны" я бы мог с вами поспорить, но не вижу ни малейшего повода (как, впрочем, и желания) это делать)
А здесь она приведена исключительно в качестве иллюстрации, только для того, чтобы показать Вам что такое "процедурный язык"!

Цитата:
Сообщение от =master=
Цитата:
что-такое процедурный язык, надеюсь, понятно стало?..
нисколько...
сочувствую!
видимо, я недостаточно знаю и умею объяснять, чтобы донести до вас смысл этого понятия.
прошу меня за это извинить!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2012, 14:55   #20
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Мне хватило бегло взгляда, чтобы "резануло глаз", а дальше интерес и вовсе пропал.
Цитата:
сочувствую!
не стоит.
=master= вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Перехват движения мыши, подключенной к заданному порту. Mixasik Общие вопросы Delphi 5 28.12.2008 18:47
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15