Вызов скалярной функции из C #

Я не получаю файлы по праздникам; Я получал файлы только в обычные дни, то есть не по праздникам. Я хочу пропустить 2021-09-06, так как сейчас выходной (День труда), и я знаю, что не получу никаких файлов. Вместо этого я хочу получить новый файл 07.09.2021, так как я получу файл в тот же день.

Я создал автоматическую функцию логики пропуска для праздников, которая отлично работает в SQL. Теперь я хочу вызвать ту же функцию из C #, и я хочу убедиться, что код C # правильный.

Это скалярная функция SQL. Я запустил функцию в SQL, и она вернула новую дату 2021-09-07.

IF OBJECT_ID('dbo.usfGetMGAHolidayCalendar') IS NOT NULL
    DROP FUNCTION dbo.usfGetMGAHolidayCalendar;

GO
CREATE FUNCTION dbo.usfGetMGAHolidayCalendar(@HolidayDate DATE)

RETURNS DATE
AS

BEGIN

DECLARE @MGAID INT = 1,
        @SCJMGAID INT=8,
        @ARSMGAID INT=16,
        @MaskDate DATETIME = '2021-09-06', /*Single day holiday example*/
        --@MaskDate DATETIME = '2021-11-25', /*Two day holiday example*/
        @NewMaskDate DATETIME,
        @IsMGAHolidayCalendar INT = 0;

SET @IsMGAHolidayCalendar=
(
    SELECT COUNT(HolidayDate)
    FROM xml.MGAHolidayCalendar
    WHERE HolidayDate = @MaskDate

);

IF @IsMGAHolidayCalendar > 0
          
        SET @NewMaskDate= DATEADD(dd, 1,@MaskDate)
    ELSE
        
        SET @NewMaskDate=@MaskDate

SET @IsMGAHolidayCalendar =
(

    SELECT COUNT(HolidayDate)
    FROM   xml.MGAHolidayCalendar
    WHERE HolidayDate=@NewMaskDate

);

 
IF @IsMGAHolidayCalendar = 1
         
         SET @NewMaskDate = DATEADD(dd, 1,@NewMaskDate)
    ELSE
        
        SET @NewMaskDate = @NewMaskDate

RETURN @NewMaskDate;

END;
GO

Теперь я вызываю эту функцию из C #. Я хочу, чтобы функция возвращала NewFileMask в этом формате даты, mm-dd-yyyy. Я не хочу, чтобы время было включено в дату.

Я так и сделал, но не уверен, правильно ли это.

static void Main(string[] args)
{
    // Set the connection string//
    string connString = @"Server=.SQL2k17; Database = SampleDB; Trusted_Connection = True;";

    try
    {
        // sql connection object
        using (SqlConnection conn = new SqlConnection(connString))
        {
            // define the query text
            string query = @"SELECT DISTINCT dbo.usfGetMGAHolidayCalendar(@HolidayDate) AS NewFileMask;";

            // define the SqlCommand object
            SqlCommand cmd = new SqlCommand(query, conn);

            // parameter value will be set from command line
            SqlParameter param1 = new SqlParameter();
            param1.ParameterName = "@HolidayDate";
            param1.SqlDbType = SqlDbType.Date;
            param1.Value = "2021-09-07";
                
            // pass parameter to the SQL Command
            cmd.Parameters.Add(param1);

            // open connection
            conn.Open();

            // execute the SQLCommand
            DateTime functionResult = (DateTime)cmd.ExecuteScalar();

            Console.WriteLine(Environment.NewLine + "Retrieving data from database..." + Environment.NewLine);
            Console.WriteLine("Retrieved result:");

            // display retrieved result
            Console.WriteLine("NewFileMask:{0}", functionResult.ToString("MM-dd-yyyy"));

            // close connection
            conn.Close();
        }
    }
    catch (Exception ex)
    {
        // display error message
        Console.WriteLine("Exception: " + ex.Message);
    }
}

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *