【问题标题】:How can I declare a scalar variable to be acceptable to SQL Server/LINQPad?如何声明一个标量变量可以被 SQL Server/LINQPad 接受?
【发布时间】:2017-07-29 17:30:11
【问题描述】:

我正在尝试在 LINQPad 中运行 T-SQL 查询,并引用了 this page 关于声明变量的信息,但得到这个:

我在声明和分配 val 给这些变量的方式中缺少什么?

我可以只替换作业,例如:

cmonth = @Cmonth

...与:

cmonth = 4

...但是查询中有几个地方引用了这个值,我不想每次测试不同的数据集时都替换它们。

那么我这样做有什么问题或遗漏?

【问题讨论】:

  • 尝试在您的 Select 语句之前删除 GO

标签: sql-server tsql linqpad scalar


【解决方案1】:

这是GO 语句。每个 SQL 块单独作为一个批处理运行,直到下一个 GO 语句。如果您想使用这些变量,它们需要与使用它们的语句在同一批次中。

简短的回答是删除GO 语句。

【讨论】:

  • @B.ClayShannon 我刚刚看了你的链接。在那篇文章中没有任何地方显示了一个 sn-p,它执行 DECLARE 来创建变量,然后在该行和使用它的位置之间有一个 GO。他们确实有一个 sn-p,它有 2 个批次,除了声明未使用的变量之外什么都不做,但我认为这只是为了显示语法。下一个 sn-ps DECLARE @DateFormat INT 并在同一批次中使用它们。
  • 还有一点:有时您会想要运行一个必须拥有多个批次的脚本。假设您想要一个 CREATE PROCEDURE,然后是一个使用它 6 次的脚本,然后您想要 DROP PROCEDURE。必须在它自己的批次中创建一个 proc,所以之后你需要一个 GO。然后你可以批量使用它,然后你会批量丢弃它。我在您的链接中没有看到任何需要批量的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多