zoukankan      html  css  js  c++  java
  • SELECT与SET对变量赋值

      SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。

      对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。

      

      SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。

      下表列出 SET 与 SELECT 的区别。

      

     

    set

    select

    同时对多个变量同时赋值

    不支持

    支持

    表达式返回多个值时

    出错

    将返回的最后一个值赋给变量

    表达式未返回值

    变量被赋null值

    变量保持原值

     

    下面以具体示例来说明问题:

    create table chinadba_a(

      userid int ,

      addr varchar(128) )

    Go

      insert into chinadba_a (userid,addr) values(1,'addr1')

      insert into chinadba_a (userid,addr) values(2,'addr2')

      insert into chinadba_a (userid,addr) values(3,'addr3')

    Go

    表达式返回多个值时,使用 SET 赋值

      declare @addr varchar(128)

      set @addr = (select addr from chinadba_a)

     Go

    表达式返回多个值时,使用 SELECT 赋值

      declare @addr varchar(128)

      select @addr = addr from chinadba_a

      print @addr --结果集中最后一个 addr 列的值

      --结果: addr3 

    Go

    表达式未返回值时,使用 SET 赋值

      declare @addr varchar(128)

      set @addr = '初始值'

      set @addr = (select addr from chinadba_a where userid = 4 )

      print @addr --null值 

    Go

    表达式未返回值时,使用 SELECT 赋值

      declare @addr varchar(128)

      set @addr = '初始值'

      select @addr = addr from chinadba_a where userid = 4

      print @addr --保持原值

    Go

      需要注意的是,SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值。此时与 使用 SET 赋值是完全相同的对标量子查询的概念大家应该都觉得陌生,举个例子就能说明

      declare @addr varchar(128)

      set @addr = '初始值'

      --select addr from chinadba_a where userid = 4 为标量子查询语句

      select @addr = (select addr from chinadba_a where userid = 4) 

      print @addr --null值

    Go

  • 相关阅读:
    ant 软件包不存在报错
    在 Internet Explorer 中使用 Windows 窗体控件
    智能客户端
    Back to the Future with Smart Clients
    "Automation 服务器不能创建对象" 的解决方案
    Top 10 Reasons for Developers to Create Smart Clients
    Updater Application Block for .NET
    Smart Client Application Model and the .NET Framework 1.1
    Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients
    智能客户端技术总结(二)
  • 原文地址:https://www.cnblogs.com/Lin267307031/p/7239798.html
Copyright © 2011-2022 走看看