有没有一种方法可以在MS SQL Server中创建“变量”

时间:2018-08-27 18:04:30

标签: sql-server

我希望用一些脚本编写一堆查询,但是我希望用户能够输入一些变量(例如year),然后将这些变量用作查询中的参数。有没有简单的方法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

您可以使用声明语句:

declare @month int = 7
declare @year int =2018

,然后在查询中使用它们:

....where month=@month and year=@year

答案 1 :(得分:0)

仅当您的脚本要在同一批中执行时,您才能执行此操作。如果您的用户要直接将这些脚本加载到SSMS中,或使用诸如SQLCMD之类的命令行客户端执行,则每个脚本文件将以其自己的批次执行,并且您需要声明变量并在每个脚本中设置值文件。

否则,您将需要用其他某种语言编写程序或脚本,以提示用户输入值。您的程序将需要知道如何在每个或脚本文件中设置变量值,然后针对SQL Server实例执行它们。

答案 2 :(得分:0)

为了清楚起见:使用DECLARE语句声明的变量仅在声明该变量的“批处理”中有效。“批处理”是SQL Server分析和分析的命令的“提交”。整体执行。如果变量是在文件中的语句中声明的,并且您是整体执行文件的,则可能是一个.sql文件的全部内容。-注意-如果脚本中不包含{{1} }。这个小词GO不是SQL命令,而是用于诸如SSMS之类的具有脚本功能的程序的命令。此命令的目的是标记“批处理结束”。它告诉程序“提交”,然后开始新的批处理(开始收集直到下一个GO或文件末尾的语句)。

在方案中使用变量的唯一方法是创建一个包含来自“ 4个或5个不同文件”中所有命令的脚本文件,并删除每个GO(至少在声明和使用变量之间) (s))。

如果需要一个可以跨多个批次(和文件)访问的值,则必须将值存储在表中,并在需要访问该值的每个批次中查询该值(将其存储到变量中)。 / p>

相关问题