В интерактивном пакетном скрипте, использующем sqlcmd, мне нужно запросить в таблице значения из одного столбца, который, как я знаю, вернет несколько записей. Возвращаемые значения - просто целые числа, но мне нужно отобразить их, чтобы пользователь мог указать, какое значение следует использовать позже в пакетном скрипте.
Вот что у меня сейчас есть:
@SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF
SET _INSTANCE=<someinstance<
SET _DATABASE=<somedb>
:getcompanyids
REM Query glb_Companies for available IDs
ECHO.
ECHO Getting Company IDs ...
ECHO.
ECHO.
FOR /F %%i IN ( 'sqlcmd -b -S %_INSTANCE% -d %_DATABASE% -E -l 2 -Q "SET NOCOUNT ON; SELECT CompanyID FROM glb_Companies"'
) DO (
SET IDs=%%i
)
ECHO Company IDs: %IDs%
ECHO.
ECHO.
ECHO After If Not Defined
@pause
Как есть, отображается только одна строка - для первой найденной записи:
Company IDs: 1
В конкретном случае и в БД, на которых я проверяю это, я знаю, что должен получить значения 1, 2 и 13. Как мне их отобразить? Они могут быть в одной строке, например:
1,2,13
или в отдельных строках
1
2
13
Это не имеет большого значения, если я могу отображать все в удобочитаемом виде. значений, возвращаемых в запросе.
В результате моего поиска были обнаружены только сценарии PowerShell, поэтому я не могу найти в этом особой помощи.
Полагаю, мне либо нужно получить возвратил значения в массив, через который я могу перебрать (если это можно сделать в sqlcmd) или как-то перебрать результирующий набор напрямую.