Объявление скалярной переменной - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь собрать Iventory для элемента для нескольких баз данных, используя операторы объявления для переименования некоторых категорий. У меня проблемы с определением

Я написал большую часть кода, но вернул эту ошибку:

Сообщение 137, уровень 15, состояние 2, строка 11
Необходимо объявить скалярную переменную "@Item".

SELECT        dbo.[Threshold Enterprises$Warehouse Entry].[Bin Type Code], dbo.[Threshold Enterprises$Warehouse Entry].[Item No_], dbo.[Threshold Enterprises$Item].Description, 
                         SUM(dbo.[Threshold Enterprises$Warehouse Entry].Quantity) AS Quantity, dbo.[Threshold Enterprises$Warehouse Entry].[Location Code], dbo.[Threshold Enterprises$Item].[Item Status], 
                         dbo.[Threshold Enterprises$Item].[Item UPC_EAN Number], dbo.[Threshold Enterprises$Item].[Vendor No_], dbo.[Threshold Enterprises$Item].[Brand (Dimension)], LEFT(dbo.[Threshold Enterprises$Item].No_, 2) AS Prefix
FROM            dbo.[Threshold Enterprises$Item] LEFT OUTER JOIN
                         dbo.[Threshold Enterprises$Warehouse Entry] ON dbo.[Threshold Enterprises$Item].No_ = dbo.[Threshold Enterprises$Warehouse Entry].[Item No_]
WHERE        (dbo.[Threshold Enterprises$Item].[Inventory Posting Group] = N'FIN_MFG_PR') OR
                         (dbo.[Threshold Enterprises$Item].[Inventory Posting Group] = 'VEND_PROD')
GROUP BY dbo.[Threshold Enterprises$Warehouse Entry].[Item No_], dbo.[Threshold Enterprises$Warehouse Entry].[Location Code], dbo.[Threshold Enterprises$Item].Description, 
                         dbo.[Threshold Enterprises$Warehouse Entry].[Bin Type Code], dbo.[Threshold Enterprises$Item].[Item Status], dbo.[Threshold Enterprises$Item].[Item UPC_EAN Number], dbo.[Threshold Enterprises$Item].[Vendor No_], 
                         dbo.[Threshold Enterprises$Item].[Brand (Dimension)], LEFT(dbo.[Threshold Enterprises$Item].No_, 2)
HAVING        (dbo.[Threshold Enterprises$Warehouse Entry].[Item No_] LIKE N'%' + UPPER(@Item) + N'%') AND (dbo.[Threshold Enterprises$Item].[Brand (Dimension)] LIKE N'%' + UPPER(@Brand) + N'%') AND 
                         (dbo.[Threshold Enterprises$Item].[Vendor No_] LIKE N'%' + UPPER(@Vendor) + N'%') AND (dbo.[Threshold Enterprises$Warehouse Entry].[Bin Type Code] IN (@BinType)) AND 
                         (dbo.[Threshold Enterprises$Warehouse Entry].[Location Code] IN (@Location)) AND (dbo.[Threshold Enterprises$Item].[Item Status] IN (@Status)) AND (LEFT(dbo.[Threshold Enterprises$Item].No_, 2) LIKE '%' + UPPER(@Prefix) 
                         + '%') OR
                         (dbo.[Threshold Enterprises$Warehouse Entry].[Item No_] LIKE N'%' + UPPER(@Item) + N'%') AND (dbo.[Threshold Enterprises$Item].[Brand (Dimension)] LIKE N'%' + UPPER(@Brand) + N'%') AND 
                         (dbo.[Threshold Enterprises$Item].[Vendor No_] LIKE N'%' + UPPER(@Vendor) + N'%') AND (dbo.[Threshold Enterprises$Warehouse Entry].[Bin Type Code] IN (@BinType)) AND 
                         (dbo.[Threshold Enterprises$Warehouse Entry].[Location Code] IN (@Location)) AND (dbo.[Threshold Enterprises$Item].[Item Status] IN (@Status)) AND (LEFT(dbo.[Threshold Enterprises$Item].No_, 2) LIKE '%' + UPPER(@Prefix) 
                         + '%')

Я смогу вернуть инвентарь для указанного мной предмета.

1 Ответ

2 голосов
/ 03 июня 2019

Поскольку вы подтвердили, что создали скрипт с помощью Query Designer из построителя отчетов, понятно, что в вашем отчете так много параметров, которые можно выбрать или вставить значения с помощью пользовательского интерфейса до того, как вы сгенерируете отчет.Выбранные / вставленные значения параметров затем передаются в запрос, а затем выполняется соответствующий запрос после замены параметра / переменных в запросе выбранным / вставленным значением.

Проблема в том, что вы пытаетесь выполнить тот же сценарийв SSMS (SQL SERVER MANAGEMENT STUDIO), что невозможно без замены переменных на их значения.Вы можете видеть в своем скрипте, что есть номера переменных, размещенные как - @ Item, @ Brand, @ Vendor и еще пара.Они имеют смысл только тогда, когда вы запускаете отчет, поскольку механизм отчетов обрабатывает эти переменные со значениями, вставленными из пользовательского интерфейса.Но так как вы хотите запустить скрипт из SSMS, вам необходимо объявить все эти переменные в верхней части скрипта и передать им необходимые значения для выполнения скрипта.

Вы можете объявить все переменные, как показано ниже, и как толькообъявление и присвоение значения завершены, теперь вы можете выполнить свой скрипт в SSMS.

DECLARE @Item VARCHAR(200) = 'Put Value'
DECLARE @Brand VARCHAR(200) = 'Put Value'
DECLARE @Vendor VARCHAR(200) = 'Put Value'
-- Similar way you need to Declare and assign value to all 
-- other variables used in the script.

SELECT    
dbo.[Threshold Enterprises$Warehouse Entry]
....... Rest of the script
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...