首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.cmd可读的SQL中定义的变量(将变量从SQL传递给cmd)

问.cmd可读的SQL中定义的变量(将变量从SQL传递给cmd)
EN

Stack Overflow用户
提问于 2014-11-20 06:49:52
回答 3查看 105关注 0票数 0

我知道如何在cmd文件中设置变量,该文件通过sqlcmd将变量传递给SQL。

示例:

代码语言:javascript
复制
sqlcmd -Usa -Ppass -d MASTER -v num="%num%" -i C:\scriptfile

我的问题是,如何在SQL中定义一个可以在SQL外部读取的变量。我知道如何在SQL脚本中声明和定义@variables,但是在SQL脚本运行的外部无法识别这些变量。

我的问题是如何将SQL中的变量传递回cmd?

有什么办法可以做到这一点吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-11-20 07:03:09

您可以使用脚本变量和SQLCMD实用程序的-v选项来完成此操作。来自 MSDN Documentation的一个小示例

假设脚本文件名为testscript.sql,Col1是一个脚本变量;您的SQL脚本如下所示

代码语言:javascript
复制
USE test;

SELECT x.$(Col1) FROM Student x WHERE marks < 5;

然后,可以使用-v选项指定要返回的列的名称,如下所示

代码语言:javascript
复制
sqlcmd -v Col1 = "FirstName" -i c:\testscript.sql

它类似于下面的查询

代码语言:javascript
复制
SELECT x.FirstName FROM Student x WHERE marks < 5;

编辑:

如果只想捕获脚本文件的输出,那么可以使用-o参数并指定输出文件,如下所示

代码语言:javascript
复制
sqlcmd -v Col1 = "FirstName" -i c:\testscript.sql -o output.txt
票数 0
EN

Stack Overflow用户

发布于 2014-11-21 04:57:47

谢谢Rahul,你无意中回答了我的问题。您可以通过SQLCMD的-o选项将脚本结果输出到文件。

考虑到这一点,我意识到我可以使用PRINT SQL创建一个-o .cmd文件,其中包含用于定义变量的.cmd语法。然后在.cmd文件中,我告诉它运行SQL创建的.cmd文件,然后在.cmd环境中定义变量。

有点绕圈子,但很管用!

谢谢!

票数 0
EN

Stack Overflow用户

发布于 2014-11-21 22:24:19

如果您只运行一个简单的select命令来获取您的值,或者运行一个exec spname来返回您想要的值,那么您可以使用以下命令。

代码语言:javascript
复制
for /f "tokens=*" %a in ('sqlcmd -Usa -Ppass -W -h -1 -d MASTER -Q "select Column from table"') do set ResultVariable=%a

如果将此文件放入bat文件中,请记住使用%%a

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27028535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档