毎日私は何か新しいことを学びます、それはそうです:)誰かが私に次のコードの振る舞いの背後にある理論的根拠を説明してもらえますか?
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
私が見たところ、結果セットがNULLの場合、SETは変数の値を変更しますが、SELECTは変更しません。これは通常のANSI動作ですか、それともT-SQL固有ですか?
もちろん、私がそうする場合SELECT @A = NULL
、割り当ては正しく行われます。