SqlServer之代碼塊相關

一、go語句

Go語句是SqlServer中用來表示當前代碼塊結束提交併確認結果的語句。

Go語句不能和其他Sql命令卸載同一行上!

定義的局部變量作用域侷限在定義它的代碼快中,如:在go語句前定義的變量在go語句後面則不可用。

如果一次執行多個用go語句分開的代碼塊時,其中一個代碼塊出錯不會影響其他代碼塊的執行

 

二、Begin……End語句

T-Sql使用begin…end來指定代碼塊,但是在begin…end中聲明的變量在end結束之後還可以使用,直到遇見go語句

begin
declare @i int=0
select @i
end
select @i
go
select @i

三、If……eles語句

SQL中的If…else語句和其他編程語言中的語法一樣,Sql中的if…else可以不用添加括號。另外SQL中還有if exists…else和if not exists…else的用法

declare @table table( Id int)
insert into @table values(1)
if( 1=1) 
	select * from @table
else
	select 1
 
if exists( select * from @table)
begin
	select * from @table
end
 
if not exists( select * from @table)
begin
	select * from @table
end

四、Case…When…then…else…end語句

Case具有兩種格式,簡單Case函數和Case搜索函數。

--簡單Case函數
CASE sex
         WHEN '1' THEN '男'
         WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數
CASE WHEN sex = '1' THEN '男'
         WHEN sex = '2' THEN '女'
ELSE '其他' END

上面兩種格式可以實現相同的功能,但是簡單的case相對來說寫法比較方便,但是他的功能也就有些限制,如對sex寫判斷比較的時候就只能選擇case搜素函數方式。如下:

CASE WHEN sex > 1 THEN '男'
         WHEN sex < 2 THEN '女'
ELSE '其他' END

五、While語句

While循環主要是根據while後邊的值來判斷循環語句是否繼續執行,如下:

declare @var_a int = 10
while( @var_a > 0)
begin
	select @var_a
	set @var_a=@var_a-1
end

While循環語句通常和遊標(cursor)一塊使用如:

declare MyCursor cursor for select Name from #table --定義遊標,遊標數據集來源臨時表#table
open MyCursor --打開遊標以供下面代碼使用
fetch next from MyCursor into @name --將遊標指向的值賦值給臨時變量@name,遊標指向下一條數據
while @@FETCH_STATUS=0 --判斷遊標是否到最後一條記錄
begin
	select @name
	fetch next from MyCursor into @name
end
close MyCursor --關閉遊標
deallocate MyCursor -- 釋放最後的遊標引用時


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章