从select-语法错误设置变量值,如果不是在括号中



我想知道为什么这不起作用:(语法错误)

declare @pis int = select 7

但这有效:

declare @pis int = (select 7)

或以下:

declare @pis int = 7

select 7有什么问题?

此版本:

declare @pis int = (select 7);

正在使用A subquery 设置@pis的值。特别是,这是A 标量子查询。标量子查询具有两个重要属性:

  • 它完全返回1列。
  • 它最多返回一排。

可以在查询中允许恒定值的情况下使用标量子查询。标量子查询始终必须具有自己的一组括号。

我认为最后一件是您的困惑。此版本:

declare @pis int = select 7;

只是解析器不知道该怎么办的关键字和字符串的集合。根据SQL语法,=符号后不允许select

最新更新