日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL中的declare用法、作用域

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

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

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

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

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

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

 那第二條輸出語句會報錯

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

說明已經出了i的作用域了。

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

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

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


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

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

 in if:1

 out if:1

看見這個結果當時我很郁悶,SQL太出人意料了。

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

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

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

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

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


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

 這下對了,檢查語法后SQL報錯“必須聲明標量變量"@test"”

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

轉自https://www.cnblogs.com/hushzhang/p/6699226.html


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

主站蜘蛛池模板: 一区二区区别是什么 | 丰满岳妇乱一区二区三区 | 欧美高清中文字幕综合网 | 国产精品k频道首页在线观看 | 可以看差差直播的软件 | 亚洲一区二区三区香蕉 | 中文字幕日本精品一区二区三区 | 红杏视频在线观看 | 尤物精品视频一区二区三区 | 国内精品卡一卡二卡三 | 欧美一区二区三区免费看 | 国产精品免费精品自在线观看 | 国精品午夜福 | 国产精品日韩欧 | 蜜桃视频在线观看免费播放 | 国产99视频精品免费视频76 | 日本在线免费 | 亚洲熟女综合色一区二区三区 | 国产日产免费高清欧美一区 | 中文字幕乱码高清免费网站 | 播放日韩| 国产精品9999 | 免费日韩视频欧美综合图区 | xxxx性欧美极品v | 精品国产福利片在线观看 | 亚洲高清乱码午夜电影网 | 免费h网站| 激情影院内 | 亚洲精品手机在线 | 中文有码视频在 | 在线精品99re网 | 最新电影电视剧 | 亚洲欧美日韩在线一区天天看 | 一区二区视频免费观看 | 在线播放一区二区 | 麻花传媒在线mv免费观看视频 | 国产精品自在在线香蕉 | 亚洲色成人中文字幕网站 | xxxx迷奷在线观看 | 日日插人人插天天插 | 欧美性活一级视频 |