每天似乎我都能学到新东西 :) 请问有人能解释一下以下代码行为的原理吗:
DECLARE @A INT
SET @A = 15
SET @A = (SELECT ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound')
SELECT @A
-- Rsultset is NULL
SET @A = 15
SELECT @A = ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound'
SELECT @A
-- Resultset is 15
据我所见,如果结果集为空,SET会改变变量的值,而SELECT不会。这是正常的ANSI行为还是特定于T-SQL的行为?
当然,如果我执行SELECT @A = NULL
,赋值会发生正确。
@a
之后会是3
,也不确定是否会执行3个赋值。 - Damien_The_Unbeliever