从dos批处理文件中调用SQL存储过程

3
我有一个 MS SQL 2005 存储过程,其中包含一个输出参数。如何从 DOS 批处理文件中调用此存储过程并获取输出参数的值?我知道我必须使用 sqlcmd,但找不到任何可以在其中传递输出参数并在 DOS 批处理文件中访问其值的内容。
谢谢 vikram
2个回答

0
在DOS中,您可以在标准输出中获取任何信息,但是您无法轻松地操纵它。必须使用DOS吗?如果您使用PowerShell,您将拥有更多的功能(即使WSH对于需要存储该值而不仅仅在命令提示符中显示它的情况也是更好的DOS选项)。
基于评论添加此内容,说明必须使用DOS。这是我的想法:

首先,我会使用out宏语句将输出定向到标准输出(stdout):

: out stdout

一旦您在stdout中输出了内容,您可以使用DOS命令将其定向到您在DOS中设置的变量。 stdout是DOS中的句柄1。

我能想到可能会导致失败的一个问题是如果其他项目混杂在stdout中。我不想解析大量垃圾。


感谢您的快速回复。由于系统的其余部分都是DOS,因此必须使用DOS。理想情况下,我希望返回值可以被捕获在一个DOS变量中,以便我可以对其进行一些检查。 - Vikram

0
我经常使用标准的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%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接