我想知道为什么这不起作用:(语法错误)
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
。