Arhn - архитектура программирования

Параметр передачи SSIS в команде SQL с ODBC

Я пытаюсь запустить переменную в команде SQL построителя выражений для OBDC.

Выражение выглядит следующим образом

"SELECT Date(Curdate())                   AS 'Load Date', 
       Sum(CASE 
             WHEN pomstatus = 'TBR' 
                  AND Date(portdate) < Curdate() THEN 1 
             ELSE 0 
           END)                          AS 'Total Removes', 
            Min(CASE 
                         WHEN pomstatus = 'TBR' THEN portdate 
                         ELSE 'N/A' 
                       END) AS 'Oldest Removes', 
       Sum(CASE 
             WHEN pomstatus = 'TBR' 
                  AND Date(portdate) < Curdate() 
                  AND Date(portdate) > Subdate(Curdate(),  @[User::Days] )THEN 1 
             ELSE 0 
           END)                          AS 'Total New Removes', 
       Sum(CASE 
             WHEN pomstatus = 'TBR' 
                  AND acctype = 'b' 
                  AND Date(portdate) < Curdate() THEN 1 
             ELSE 0 
           END)                          AS 'SOHO Removes', 
       Sum(CASE 
             WHEN pomstatus = 'C-U' 
                  AND Date(dd) < Curdate() THEN 1 
             ELSE 0 
           END)                          AS 'Total Confirmed U', 
            Min(CASE 
                         WHEN pomstatus = 'C-U' THEN dd 
                         ELSE 'N/A' 
                       END) AS 'Oldest Confirmed U', 
       Sum(CASE 
             WHEN pomstatus = 'C-U' 
                  AND discoservice LIKE '%s%' 
                  AND Date(dd) < Curdate()THEN 1 
             ELSE 0 
           END)                          AS 'Total Confirmed Satellite', 
            Min(CASE 
                         WHEN pomstatus = 'C-U' 
                              AND discoservice LIKE '%s%' THEN dd 
                         ELSE 'N/A' 
                       END) AS 'Oldest Confirmed Satellite', 
       Sum(CASE 
             WHEN pomstatus = 'C-U' 
                  AND Date(dd) < Curdate() 
                  AND Date(dd) > Subdate(Curdate(),   @[User::Days] ) THEN 1 
             ELSE 0 
           END)                          AS 'Total New Confirmed U', 
       Sum(CASE 
             WHEN pomstatus = 'pwo' THEN 1 
             ELSE 0 
           END)                          AS 'Total Pending WO', 
       Sum(CASE 
             WHEN pomstatus = 'etbr' THEN 1 
             ELSE 0 
           END)                          AS 'Total Escalated TBR', 
       Sum(CASE 
             WHEN pomstatus = 'wtnr' THEN 1 
             ELSE 0 
           END)                          AS 'Total Waiting TNR' 
FROM   POM.mainorders 
WHERE  acctype <> 'c';"

Я получаю следующую ошибку:

Всплывающее окно с ошибкой

Всплывающее окно с ошибкой

Я протестировал тот же скрипт, но заменил 2 переменные на число 2, и все прошло успешно, поэтому я знаю, что сам скрипт работает. Мне кажется, что переменная не проходит должным образом.

Что касается того, как я заполняю переменную, переменная заполняется из выполнения задачи SQL, изображенной ниже:

Выполнить задачу SQL

Выполнить задачу SQL


Выполнить задачу SQL

Выполнить задачу SQL


Результат конструктора запросов

Результат построителя запросов



Ответы:


1

Он не распознает переменную внутри строки

попробуйте объединить строку с этим:

Subdate(Curdate(), "+ @[User::Days] + " )

Лично я бы создал хранимую процедуру в базе данных и передал бы два параметра, но не у всех есть доступ к этому.

30.05.2018

2

Это не то, как параметры работают с задачей «Выполнение SQL».

Либо вы используете конкатенацию строк, как предлагает @KeithL, либо правильно сопоставляете переменные (@[User::Days]) с параметрами (зависит от вашего провайдера - либо маркер ? на основе порядкового номера, либо именованный параметр @myvalue)

Поскольку ваш провайдер указывает OLE DB, вам нужно будет использовать ? в качестве заполнителя, и тогда он станет порядковой системой на основе 0. Нажмите «Сопоставление параметров», и имя параметра — 0, а переменная — @[User::Days].

См. также Books OnLine — сопоставление параметров запроса с переменными в выполнение задачи SQL

31.05.2018
  • Спасибо за комментарий, я пробовал это, но я не мог заставить его работать/не мог понять его правильно. Предложение KeithL сработало, но я буду помнить об этом для будущих проблем. 31.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..