Casper-SC
@Casper-SC
Программист (.NET)

Как правильно задать параметры в запросе?

Соединение с БД есть, запрос рабочий, таблица в той БД есть, всё для подключения к БД и отправке запроса настроено правильно, как я понимаю. Но почему я не могу подставить значение переменной в запрос, что делаю не так?

добавлено позже:
Решил временно эту проблему так: в скрипте просто динамически генерирую запрос, все параметры в нём подставляю прямо в текст запроса. Так заработало.
private const string NotifyManagerTimestampName = "NotifyManagerTimestamp";
        private const string SqlNotifyManagerTimestamp = "SqlNotifyManagerTimestamp";

        private const string SqlNotifyManagerPattern = @"UPDATE DatetimeStamp SET STAMP = CAST({0} AS DATETIME2) WHERE NAME = 'SsisTestManager';";

        /// <summary>
        /// This method is called when this script task executes in the control flow.
        /// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
        /// To open Help, press F1.
        /// </summary>
        public void Main()
        {
            try
            {
                DateTime now = DateTime.Now;
                string nowParam = "'" + now.Year + now.Month.ToString("00") + now.Day.ToString("00") + "'";
                string result = string.Format(SqlNotifyManagerPattern, nowParam);

                Dts.Variables[NotifyManagerTimestampName].Value = now;
                Dts.Variables[SqlNotifyManagerTimestamp].Value = result;
                
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            catch (Exception)
            {
                Dts.TaskResult = (int)ScriptResults.Failure;
            }
        }

конец.

Запрос, который использую в "Задача "Выполнение SQL"
UPDATE DatetimeStamp SET STAMP = CAST([NotifyManagerTimestamp] AS DATETIME2) 
WHERE NAME = 'SsisTestManager';

938126a0c2be42c3852e21cccb51b883.jpg1ad550f2338f430f984e2b3186ab3391.jpgbe86fe1e5cac47d68405c9806959935c.jpg

- Задача Задача "Выполнение SQL":

Начата проверка данных

Проверка данных завершена

[Задача "Выполнение SQL"] Ошибка: Executing the query "UPDATE DatetimeStamp SET STAMP = CAST([NotifyManag..." failed with the following error: "Invalid column name 'NotifyManagerTimestamp'.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Не удалось выполнить задачу Задача "Выполнение SQL"
  • Вопрос задан
  • 330 просмотров
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
1) Зачем писать в []?
2) Покажите, пожалуйста, как у вас формируется и вызывается SQL-запрос
Ответ написан
Комментировать
@art_karetnikov
Лучший мой проект: Мобильный банк Сбербанка РФ.
То, что у вас делает запрос, означает следующее:

Для поля STAMP
возьми значение из поля [NotifyManagerTimestamp]
Поэтому и ошибка. Вам о ней и пишут: поле такое не найдено. Если вы хотите использовать переменную, то это вот так: @NotifyManagerTimestamp
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы