Возврат нескольких значений из запроса sqlcmd в пакетном скрипте - PullRequest
1 голос
/ 29 января 2020

В интерактивном пакетном скрипте, использующем 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) или как-то перебрать результирующий набор напрямую.

...