【问题标题】:How do I get the result of the query to a variable (from sqlcmd to batch/cmd)?如何将查询结果获取到变量(从 sqlcmd 到批处理/cmd)?
【发布时间】:2016-12-18 23:03:26
【问题描述】:

我已经得到了我想要的大部分内容,我只需要知道如何去做;

  1. 从sql结果中收集变量
  2. 根据收集到的变量结果采取下一步行动

我需要发生的事情放在一个;

如果updatedDate 早于3 天前,则GOTO BREXIT(忽略时间)。我更愿意在 *.sql 之外处理它,因为我想在其他应用程序中使用它。

例如1

  • 更新日期 = 5/12/2016 14:30
  • 3 天前 = 2/12/2016 00:00
  • 结果 = 转到提取物

例如2

  • 更新日期 = 6/12/2016 02:30
  • 3 天前 = 2/12/2016 00:00
  • 结果 = 脱欧

目前代码如下(评论还没编码):

echo Check last update 
sqlcmd -S MYSERVER\JD2016 -d OMNITRIX -Q "SET NOCOUNT ON SELECT MAX(updateDateTime) 'updatedDate' FROM dbo.Names;" -h-1 -b

::(if statement would go here)

:EXTRACT
echo Running Omnitrix Extract
sqlcmd -S MYSERVER\JD2016 -d OMNITRIX -i "C:\update.sql" -W -s; -h-1 > "C:\result.csv" -b

echo Omnitrix has been extracted

GOTO END

::(:BREXIT)
::(echo Please Update the Omnitrix)

:END
pause

【问题讨论】:

  • 在批处理文件中查看有关 IF ELSE 的链接:stackoverflow.com/questions/11081735/…
  • 感谢您的回复!我知道如何处理流程 - 我的问题或多或少,如何将查询结果(即 2016 年 5 月 12 日 15:13)捕获到 x 中,只读取日期(2016 年 5 月 12 日)然后比较该日期到当前日期 - 3
  • 如果你有解决方案,你可以在这里发布它作为答案,甚至接受它......
  • 虽然我实际上没有解决方案...我不知道如何将 05/12/2016 设置为 x 然后使用它

标签: sql-server tsql batch-file cmd sqlcmd


【解决方案1】:

为简单起见,我建议您直接在第一个 sql 中检查您的最大到期日期。即:

select case 
  when datediff(getdate(), max(yourdate)) > 3 then 'needupdate' 
  else 'ok' end 
from ...

然后看Windows batch assign output of a program to a variable

可能用链接评论就足够了,但建议太长了......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多