zoukankan      html  css  js  c++  java
  • 将查询结果赋值给变量时使用set与select的区别

    在某些应用场景下,将一个查询结果值赋值给一个变量时, 一定要注意set与select的使用。 好,直奔主题:

    /****************** 场景布置 ******************/
    DROP TABLE #
    CREATE TABLE #(OrderId INT)
    INSERT #(OrderId) VALUES(1)
    INSERT #(OrderId) VALUES(2)
    
    
    /****************** 角色上场 ******************/
    -----角色1:
    DECLARE @id INT 
    SET @id=100
    SET @id=(SELECT ISNULL(OrderId,0) FROM # WHERE OrderId=1000000000)
    SELECT @id
    --结果为NULL, 因为不存在OrderId为1000000000的单号,所以为NULL
    
    -----角色2:
    DECLARE @id INT 
    SET @id=100
    SELECT @id=ISNULL(OrderId,0) FROM # WHERE OrderId=1000000000
    SELECT @id
    --结果为100, 因为不存在OrderId为1000000000的单号,所以执行SELECT @id=...未能给@id赋值
    
    -----角色3:
    DECLARE @id INT 
    SET @id=100
    SELECT @id=OrderId FROM #-- ORDER BY OrderId DESC
    SELECT @id
    --结果为2, 执行SELECT @id=...将返回结果的最后一个值给@id


    今天在调试sp时,由于把角色2派上用场,使我可没少费心思。 最后换成角色1ok了。


    当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
    本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/archive/2012/09/18/2691447.html


  • 相关阅读:
    Python实现常用的数据结构
    Python实现一些常用排序算法
    python实现简单排序算法
    Django学习-25-图片验证码实例
    Django学习-24-Ajax
    Django学习-23-ModelForm
    Django学习-22-Form
    Django学习-21-表关系参数
    Django学习-20-信号
    用"再生龙"Clonezilla 来克隆Linux系统
  • 原文地址:https://www.cnblogs.com/buguge/p/2691447.html
Copyright © 2011-2022 走看看