Sql server 2005 从dos批处理文件调用SQL SP

Sql server 2005 从dos批处理文件调用SQL SP,sql-server-2005,dos,Sql Server 2005,Dos,我有一个MS SQL 2005存储过程,它带有一个out参数。我如何从dos批处理文件中调用它并获取out参数的值?我知道我必须使用sqlcmd,但在那里找不到任何可以传递参数并在dos批处理文件中访问其值的内容 谢谢 vikram在DOS中,您将获得标准输出中返回的任何信息,但您无法轻松地处理这些信息。这一定是DOS吗?PowerShell是一个选项,因为PowerShell具有更多功能(如果您需要存储此值,而不仅仅是在命令提示符中显示此值,那么即使WSH也是DOS的更好选项) 根据注释添加此

我有一个MS SQL 2005存储过程,它带有一个out参数。我如何从dos批处理文件中调用它并获取out参数的值?我知道我必须使用sqlcmd,但在那里找不到任何可以传递参数并在dos批处理文件中访问其值的内容

谢谢
vikram

在DOS中,您将获得标准输出中返回的任何信息,但您无法轻松地处理这些信息。这一定是DOS吗?PowerShell是一个选项,因为PowerShell具有更多功能(如果您需要存储此值,而不仅仅是在命令提示符中显示此值,那么即使WSH也是DOS的更好选项)

根据注释添加此项必须是DOS。以下是我的想法:


首先,我将使用out宏语句指向stdout:

: out stdout
一旦在标准输出中有了输出,就可以使用DOS命令将其指向在DOS中设置的变量。标准输出是DOS中的句柄1


我认为可能导致此失败的一个问题是,如果其他项将stdout弄乱。我不想通过大量垃圾进行解析。

我一直在用标准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%
sqlcmd-b-S%COMPUTERNAME%-E-d%DBNAME%-Q“exec getXMLLocation;”-h-1
-o SearchResult.txt

set/p URI=感谢您的快速回复。它必须是DOS,因为系统的其余部分都在DOS中。理想情况下,我希望返回的值被捕获到dos变量中,这样我就可以对它运行一些检查。