<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    憨厚生

    ----Java's Slave----
    ***Java's Host***

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      165 隨筆 :: 17 文章 :: 90 評(píng)論 :: 0 Trackbacks

    #

    SQL Server 中對(duì)已經(jīng)定義的變量賦值的方式用兩種,分別是 SET 和 SELECT。
    對(duì)于這兩種方式的區(qū)別,SQL Server 聯(lián)機(jī)叢書中已經(jīng)有詳細(xì)的說明,但很多時(shí)候我們
    并沒有注意,其實(shí)這兩種方式還是有很多差別的。

    SQL Server推薦使用 SET 而不是 SELECT 對(duì)變量進(jìn)行賦值。
    當(dāng)表達(dá)式返回一個(gè)值并對(duì)一個(gè)變量進(jìn)行賦值時(shí),推薦使用 SET 方法。

    下表列出 SET 與 SELECT 的區(qū)別。請(qǐng)?zhí)貏e注意紅色部分。

    set select
    同時(shí)對(duì)多個(gè)變量同時(shí)賦值 不支持 支持
    表達(dá)式返回多個(gè)值時(shí) 出錯(cuò) 將返回的最后一個(gè)值賦給變量
    表達(dá)式未返回值 變量被賦null值 變量保持原值

    下面以具體示例來說明問題:

    create table chinadba1(
    userid int ,
    addr varchar(128)
    )
    go
    insert into chinadba1(userid,addr) values(1,'addr1')
    insert into chinadba1(userid,addr) values(2,'addr2')
    insert into chinadba1(userid,addr) values(3,'addr3')
    go

    表達(dá)式返回多個(gè)值時(shí),使用 SET 賦值


    declare @addr varchar(128)
    set @addr = (select addr from chinadba1)
    /*
    --出錯(cuò)信息為
    服務(wù)器: 消息 512,級(jí)別 16,狀態(tài) 1,行 2
    子查詢返回的值多于一個(gè)。當(dāng)子查詢跟隨在 =、!=、<、<=、>、>= 之后,或子查詢用作表達(dá)式時(shí),這種情況是不允許的。
    */
    go

    表達(dá)式返回多個(gè)值時(shí),使用 SELECT 賦值

    declare @addr varchar(128)
    select @addr = addr from chinadba1
    print @addr --結(jié)果集中最后一個(gè) addr 列的值
    --結(jié)果: addr3
    go

    表達(dá)式未返回值時(shí),使用 SET 賦值

    declare @addr varchar(128)
    set @addr = '初始值'
    set @addr = (select addr from chinadba1 where userid = 4 )
    print @addr --null值
    go

    表達(dá)式未返回值時(shí),使用 SELECT 賦值

    declare @addr varchar(128)
    set @addr = '初始值'
    select @addr = addr from chinadba1 where userid = 4
    print @addr --保持原值
    go

    需要注意的是,SELECT 也可以將標(biāo)量子查詢的值賦給變量,如果標(biāo)量子查詢不返回值,則變量被置為 null 值。
    此時(shí)與 使用 SET 賦值是完全相同的
    對(duì)標(biāo)量子查詢的概念大家應(yīng)該都覺得陌生,舉個(gè)例子就能說明

    declare @addr varchar(128)
    set @addr = '初始值'
    --select addr from chinadba1 where userid = 4 為標(biāo)量子查詢語句
    select @addr = (select addr from chinadba1 where userid = 4)
    print @addr --null值
    go

    轉(zhuǎn)自:http://blog.csdn.net/shouyenet1/archive/2008/12/13/3511818.aspx

    posted @ 2009-12-02 17:10 二胡 閱讀(208) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共165頁: First 上一頁 15 16 17 18 19 20 21 22 23 下一頁 Last 
    主站蜘蛛池模板: 亚洲第一成年网站大全亚洲| 久久精品国产亚洲AV果冻传媒| 182tv免费观看在线视频| 很黄很黄的网站免费的| 亚洲福利视频导航| 国产亚洲综合一区二区三区| 欧洲人成在线免费| 日本不卡视频免费| 亚洲AV无码国产一区二区三区 | 亚洲人成电影亚洲人成9999网 | 亚洲第一AAAAA片| 免费91麻豆精品国产自产在线观看 | 3344免费播放观看视频| 亚洲宅男天堂a在线| 99re6在线精品免费观看| 亚洲成a人片在线观看无码 | 亚洲日韩国产精品乱| 亚洲日韩一区二区一无码| 无码日韩精品一区二区三区免费| 亚洲AV乱码久久精品蜜桃| 3344永久在线观看视频免费首页| 狠狠色伊人亚洲综合网站色| 国产人妖ts在线观看免费视频| 亚洲一区中文字幕在线观看| 日韩一区二区a片免费观看 | 国产成人高清精品免费软件| 一个人看的免费观看日本视频www| 国产成在线观看免费视频| 亚洲天堂一区二区| 成年人网站在线免费观看| 免费无码专区毛片高潮喷水 | 久久亚洲欧洲国产综合| 免费观看亚洲人成网站| 伊人久久大香线蕉亚洲| v片免费在线观看| 日产亚洲一区二区三区| 日韩毛片免费在线观看| 精品国产麻豆免费人成网站| 亚洲国产精品无码第一区二区三区| 啦啦啦中文在线观看电视剧免费版| 老司机午夜性生免费福利 |