我想知道为什么这不起作用:(语法错误)
declare @pis int = select 7
但这有效:
declare @pis int = (select 7)
或者这个:
declare @pis int = 7
select 7
有什么问题?
答案 0 :(得分:2)
此版本:
declare @pis int = (select 7);
正在使用子查询来设置@pis
的值。特别是,这是一个标量子查询。标量子查询有两个重要属性:
可以在查询中允许常量值的情况下使用标量子查询。标量子查询总是必须有自己的一组括号。
我认为最后一块是你的困惑。这个版本:
declare @pis int = select 7;
只是解析器不知道如何处理的关键字和字符串的集合。根据SQL语法,select
符号后不允许=
。