Использование параметра в операторе SELECT в SQL C# - PullRequest
0 голосов
/ 07 мая 2020

У меня нижеприведенный запрос T- SQL работает правильно в SSMS.

DECLARE @StartDTTM DATE = '2020-04-25'
DECLARE @EndDTTM DATE = '2020-05-02'

CREATE TABLE #Temp
(
    D_Date DATE,
)

WHILE @StartDTTM <= @EndDTTM
BEGIN
    INSERT INTO #Temp
        SELECT @StartDTTM AS D_DATE

    SET @StartDTTM = DATEADD(DAY, 1, @StartDTTM)
END

SELECT * FROM #Temp
DROP TABLE #Temp

Но при вызове из C# & System.Data.SqlClient все столбцы имеют жестко заданную дату начала и дату итерации не берет трубку.

using (SqlCommand cmd = new SqlCommand(QueryText))
{
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;

    SqlParameter param;
    param = new SqlParameter("@StartDTTM", '2020-04-25');
    cmd.Parameters.Add(param);
    param = new SqlParameter("@EndDTTM", '2020-05-02');
    cmd.Parameters.Add(param);

    using (SqlDataAdapter da = new SqlDataAdapter())
    {
        da.SelectCommand = cmd;
        da.Fill(ds);
    };
};

Редактировать 1: У меня есть дополнительный лог c в запросе. Я пытаюсь получить значения в таблице для даты итерации, попадающей между двумя столбцами даты, в основном снимок значений для даты итерации. Надеюсь, это поможет

Edit 2: при прохождении через SQL Command @StartDTTM изменяется на значение, а затем запрос передается на SQL. Следовательно, все строки содержат дату начала. Есть обходной путь?

...