Вызовите SQL SP из пакетного файла DOS - PullRequest
3 голосов
/ 14 июля 2011

У меня есть хранимый процесс MS SQL 2005, который принимает параметр out.Как я могу вызвать это из пакетного файла DOS и получить значение выходного параметра?Я знаю, что должен использовать sqlcmd, но не могу найти там ничего, с помощью которого я могу передать параметр и получить доступ к его значению в пакетном файле DOS.

Спасибо, Викрам

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Я делаю подобные вещи постоянно (например, так) со стандартным T-SQL, но вы можете сделать что-то подобное с хранимой процедурой, если вы отредактируете хранимую процедуру, чтобы показать однострочный набор результатов.

sqlcmd -b -S %COMPUTERNAME% -E -d %DBNAME% -Q "exec getXMLLocation;" -h-1 
   -o SearchResult.txt
  set /p URI=<SearchResult.txt
  @echo The XML file URI is: %URI%
0 голосов
/ 14 июля 2011

В DOS вы получите любую информацию, возвращенную в стандарте, но вы не можете легко манипулировать этим.Должно ли это быть DOS?Является ли PowerShell вариантом, так как у вас есть больше возможностей с PowerShell (черт возьми, даже WSH - лучший вариант для DOS, если вам нужно сохранить это значение, а не просто показать его в командной строке).

Добавление этого на основекомментарий это должно быть DOS.Вот мои мысли:


Во-первых, я бы использовал оператор макроса out для направления к stdout:

: out stdout

После того, как вы получили вывод в stdout, вы можете использовать команды DOS длянаправьте его на переменные, которые вы установили в DOS.stdout - это дескриптор 1 в DOS.

Единственная проблема, которая может привести к сбою, - это если другие элементы загромождают stdout.Я не хотел бы разбирать много мусора.

...