У меня есть хранимая процедура, которая должна запрашивать на основе выбора пользователя.Хранимая процедура принимает три параметра GUID (выбранных пользователем) и хранит каждый GUID в своей собственной переменной с именем '@GUID_X', где X будет целым числом в диапазоне [1-15).
Хранимая процедура должна запрашивать эти значения GUID, и поскольку в именах переменных есть шаблон, я хотел бы использовать цикл для перебора переменных для доступа к их значениям, а затем вставлять каждое значение взапрос.
До сих пор я пытался объединить '@GUID_' + 'номер счетчика' и получил список значений, таких как:
@FoodGUID_3
@FoodGUID_2
@FoodGUID_1
Когда на самом деле я ожидалсписок, который выглядел как:
ABABABA1-FGH-1234-ZX12-123456EDVERT
GHDF1234-CVB-4312-CV15-678912NK1284
VBNM5678-BVC-2134-BN18-852741DC1434
Почему я не могу получить доступ к фактическим значениям GUID объявленных @FoodGUID_X
аргументов?Что было бы лучшим способом решения этой проблемы?В идеале подход не заключался бы в использовании предложения «if» для каждого аргумента, поскольку это может быть дорого!
Для ссылки.вот мой полный код:
DECLARE @foodGUID_1 NVARCHAR(360) = N'ABABABA1-FGH-1234-ZX12-123456EDVERT',
@foodGUID_2 NVARCHAR(360) = N'GHDF1234-CVB-4312-CV15-678912NKOMLP',
@foodGUID_3 NVARCHAR(360) = N'VBNM5678-BVC-2134-BN18-852741DCFVGB'
DECLARE @SelectSQL NVARCHAR(2500) = 'Query string + '
DECLARE @NumOfFoodsSelected INT = 3
DECLARE @counter INT = @NumOfFoodsSelected
DECLARE @currentGUID NVARCHAR(360)
SET @currentGUID = '@DeviceGUID_'+ CONVERT(NVARCHAR(15), @counter)
PRINT @currentGUID
WHILE (@counter != 1)
BEGIN
SET @counter = @counter - 1
SET @currentGUID = '@DeviceGUID_'+ CONVERT(NVARCHAR(15), @counter)
PRINT @currentGUID
END
Заранее спасибо за любую помощь!:)