Kam*_*mbo 21 sql t-sql variables
尝试在TSQL的if exists子句中分配变量
DECLARE @myvar int
IF EXISTS (SELECT @myvar = theTable.varIWant..... )
Run Code Online (Sandbox Code Playgroud)
我认为这会奏效,但显然不是吗?或许(更有可能)我做错了.
And*_*y M 20
在我安装的SQL Server 2008 R2中,它根本无法编译.解析器抱怨附近有不正确的语法=.
我认为它必须与在单个SELECT语句中混合值赋值和数据检索有关,这在SQL Server中是不允许的:您可以拥有其中一个或另一个.因为,当您分配值时,不返回行集但EXISTS谓词需要它,在该上下文中不能允许赋值,因此,为避免混淆,可能必须明确强加限制.
您在评论中谈到的解决方法是一个不错的方法,但是当变量在赋值之前已经获得了值时,在批处理中间的某个地方可能无法正常工作.所以我可能会使用这种解决方法:
SELECT @myvar = ...
IF @@ROWCOUNT > 0 ...
Run Code Online (Sandbox Code Playgroud)
根据MSDN,@@ROWCOUNT系统函数返回查询读取的行数.
小智 7
IF EXISTS你可以做,而不是做
DECLARE @myvar int
SELECT @myvar = theTable.varIWant.....;
IF @myvar IS NULL
BEGIN...
Run Code Online (Sandbox Code Playgroud)