公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL中的declare用法、作用域

freeflydom
2024年11月16日 8:13 本文熱度 1520

平時寫SQL查詢、存儲過程都是憑著感覺來,沒有探究過SQL的具體語法,一直都是按c#那一套往SQL上模仿,前幾天項(xiàng)目中碰到一個問題引起了我對declare定義變量的作用域的興趣。

大家都知道c#中的局部變量,在if中如果我們定義一個變量的話他的作用到if結(jié)束為止,if外是不識別這個變量的,else里都不能使用,簡單的寫一下。

if (true)
{
      Int32 i = 1;
      Console.WriteLine(i);
}

這個i的作用域就是if里面,如果我們在if外面用這個變量 

if (true)
{
    Int32 i = 1;
    Console.WriteLine(i);
}
Console.WriteLine(i);

 那第二條輸出語句會報(bào)錯

The name 'i' does not exist in the current context

說明已經(jīng)出了i的作用域了。

那么我們要是在sql寫這么一段代碼會是什么情況呢?首先寫在if內(nèi)  

IF 1=1
BEGIN
    DECLARE @test VARCHAR
    SET @test='1'   
    PRINT 'in if:'+@test
END

 運(yùn)行看結(jié)果輸出in if:1這是可以預(yù)想的結(jié)果。那我們在if外面使用變量@test試試。 


IF 1=1
BEGIN
   DECLARE @test VARCHAR
   SET @test='1'   
   PRINT 'in if:'+@test
END
PRINT 'out if:'+@test

 這樣會是什么結(jié)果呢,不知道大家怎么想的,以我的大腦順勢就想到這應(yīng)該報(bào)錯啊,出了變量的作用域了。實(shí)際結(jié)果不僅沒報(bào)錯而且@test的值還在。

 in if:1

 out if:1

看見這個結(jié)果當(dāng)時我很郁悶,SQL太出人意料了。

在SQL SERVER 2005的幫助文檔里關(guān)于declare的幫助里發(fā)現(xiàn)這么一句話,備注的第三行“局部變量的作用域是其被聲明時所在批處理”

Msdn的地址:http://msdn.microsoft.com/zh-cn/library/ms188927.aspx

這行字在這么一大篇中還真挺不引人矚目。

現(xiàn)在我們知道原來declare變量的作用域是所在的批處理,if阻斷不了它的作用域,那上面我們的代碼if內(nèi)外的代碼都在一個批處理中,所以@test都是可用的且if里面設(shè)置的值還在。

下面我改造一下代碼,SQL中是以GO語句來區(qū)分批處理的 


IF 1=1
BEGIN
   DECLARE @test VARCHAR
   SET @test='1'   
   PRINT 'in if:'+@test
END
GO
PRINT 'out if:'+@test

 這下對了,檢查語法后SQL報(bào)錯“必須聲明標(biāo)量變量"@test"”

 注:GO就是用于一個sql語句的結(jié)束 比如說一個批處理語句是這樣的 select *from ,b select *from a 在后一個select后面加上一個GO這樣可以一次執(zhí)行兩條sql 語句

轉(zhuǎn)自https://www.cnblogs.com/hushzhang/p/6699226.html


該文章在 2024/11/16 9:30:06 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产成人91精品 | 国产精品国产高清国产专区720p | 91精品在线免费视频 | 国产成人午夜精品影院 | 国产一区内射最近更新 | 91精品亚洲 | 精品国产在天天线2025 | 成人综合在线视频免费观看 | 国产成人高清一区二区私人 | 国产一区二区黄片 | 国产美女裸体免无遮挡免费网站 | 国产精品成人av无码久久 | 国产精品成人av在线不卡 | 国产午夜片无码区在线观看 | 国产办公室无码视频在线观看 | 国产黄a大片真人免费视频 国产黄a级三级三级看三级 | 国产日韩精品视频一区 | 国产成人无码精品久久久免 | 国产无码自拍高清小电影 | 国产爆操美女五月天 | 国产一区二区免 | 极品中文字幕国产视频 | 精品国产成人一区二区 | 成在人线v无码免费高潮喷水 | 97人妻起碰免费公开视频不卡 | 2025国产精品午夜久久 | 国产欧美日韩免费观看一区二区 | aⅴ亚洲 | 精品无人区一线二线三线区别 | 国产后式视频无码在线 | 成人午夜看片在线观看 | 国产成人一区二区三区精品久久 | 国产盗摄一区二区欧美精品 | 精品视频在线视频观看 | 国产一区二区三区久久精品 | 国产一区二区欧美区 | 国产精品视频一区二区 | 国精产品一区二区三区四区糖心 | 国产一区二区三区免费观看在线 | 精品无码视频一区二区三区 | 国产综合激情在线亚洲第一页 |