偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL循環(huán)語(yǔ)句的妙用

數(shù)據(jù)庫(kù) SQL Server
SQL有多種寫法可以實(shí)現(xiàn)循環(huán)操作,把寫好的SQL語(yǔ)句放在計(jì)劃任務(wù)里,可以達(dá)到奇妙的效果,下面就將為您介紹SQL循環(huán)語(yǔ)句的一些應(yīng)用,供您參考。

SQL中使用FOR語(yǔ)句和While語(yǔ)句都可以實(shí)現(xiàn)循環(huán)操作,下面就將為您介紹SQL循環(huán)語(yǔ)句的一些應(yīng)用,供您參考,希望對(duì)您深入學(xué)習(xí)應(yīng)用循環(huán)語(yǔ)句能夠有所幫助。

使用SQL的Agent可以執(zhí)行計(jì)劃任務(wù),把寫好的SQL語(yǔ)句放在計(jì)劃任務(wù)里,可以達(dá)到奇妙的效果,如定時(shí)備份數(shù)據(jù),定時(shí)執(zhí)行特定操作等等,當(dāng)涉及循環(huán)操作很多條數(shù)據(jù)時(shí),這里就要使用游標(biāo)了,當(dāng)然SQL中也有循環(huán)語(yǔ)句,如使用While。不過(guò)while的功能只能實(shí)現(xiàn)一般的操作,游標(biāo)的功能更為強(qiáng)大些,可在一個(gè)指定的一個(gè)集合內(nèi)循環(huán)操作數(shù)據(jù),實(shí)現(xiàn)動(dòng)態(tài)操作,那就更牛了,呵呵,以下資料供存檔用。

WHILE
設(shè)置重復(fù)執(zhí)行 SQL 語(yǔ)句或語(yǔ)句塊的條件。只要指定的條件為真,就重復(fù)執(zhí)行語(yǔ)句??梢允褂?BREAK 和 CONTINUE 關(guān)鍵字在循環(huán)內(nèi)部控制 WHILE 循環(huán)中語(yǔ)句的執(zhí)行。

語(yǔ)法
WHILE Boolean_expression
      { sql_statement | statement_block }
      [ BREAK ]
      { sql_statement | statement_block }
      [ CONTINUE ]

參數(shù)
Boolean_expression

返回 TRUE 或 FALSE 的表達(dá)式。如果布爾表達(dá)式中含有 SELECT 語(yǔ)句,必須用圓括號(hào)將 SELECT 語(yǔ)句括起來(lái)。

{sql_statement | statement_block}

Transact-SQL 語(yǔ)句或用語(yǔ)句塊定義的語(yǔ)句分組。若要定義語(yǔ)句塊,請(qǐng)使用控制流關(guān)鍵字 BEGIN 和 END。

BREAK

導(dǎo)致從最內(nèi)層的 WHILE 循環(huán)中退出。將執(zhí)行出現(xiàn)在 END 關(guān)鍵字后面的任何語(yǔ)句,END 關(guān)鍵字為循環(huán)結(jié)束標(biāo)記。

CONTINUE

使 WHILE 循環(huán)重新開(kāi)始執(zhí)行,忽略 CONTINUE 關(guān)鍵字后的任何語(yǔ)句。

注釋
如果嵌套了兩個(gè)或多個(gè) WHILE 循環(huán),內(nèi)層的 BREAK 將導(dǎo)致退出到下一個(gè)外層循環(huán)。首先運(yùn)行內(nèi)層循環(huán)結(jié)束之后的所有語(yǔ)句,然后下一個(gè)外層循環(huán)重新開(kāi)始執(zhí)行。

示例

declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end

------------------------------------------------------------

while 條件
begin
執(zhí)行操作
set @i=@i+1
end

A. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE
在下例中,如果平均價(jià)格少于 $30,WHILE 循環(huán)就將價(jià)格加倍,然后選擇最高價(jià)。如果最高價(jià)少于或等于 $50,WHILE 循環(huán)重新啟動(dòng)并再次將價(jià)格加倍。該循環(huán)不斷地將價(jià)格加倍直到最高價(jià)格超過(guò) $50,然后退出 WHILE 循環(huán)并打印一條消息。

USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
     UPDATE titles
        SET price = price * 2
     SELECT MAX(price) FROM titles
     IF (SELECT MAX(price) FROM titles) > $50
        BREAK
     ELSE
        CONTINUE
END
PRINT 'Too much for the market to bear'

B. 在帶有游標(biāo)的過(guò)程中使用 WHILE
以 下的 WHILE 結(jié)構(gòu)是名為 count_all_rows 過(guò)程中的一部分。下例中,該 WHILE 結(jié)構(gòu)測(cè)試用于游標(biāo)的函數(shù) @@FETCH_STATUS 的返回值。因?yàn)?@@FETCH_STATUS 可能返回 –2、-1 或 0,所以,所有的情況都應(yīng)進(jìn)行測(cè)試。如果某一行在開(kāi)始執(zhí)行此存儲(chǔ)過(guò)程以后從游標(biāo)結(jié)果中刪除,將跳過(guò)該行。成功提取 (0) 后將執(zhí)行 BEGIN...END 循環(huán)內(nèi)部的 SELECT 語(yǔ)句。

單變量循環(huán)
USE pubs
DECLARE tnames_cursor CURSOR
FOR
     SELECT TABLE_NAME
     FROM INFORMATION_SCHEMA.TABLES
OPEN tnames_cursor
DECLARE @tablename sysname
--SET @tablename = 'authors'
FETCH NEXT FROM tnames_cursor INTO @tablename
WHILE (@@FETCH_STATUS <> -1)
BEGIN
     IF (@@FETCH_STATUS <> -2)
     BEGIN   
        SELECT @tablename = RTRIM(@tablename)
        EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '
              + @tablename )
        PRINT ' '
    END
     FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor

多變量循環(huán)

CREATE      PROCEDURE my_FeeCount AS
declare @到期時(shí)間      char(10)
declare @片區(qū)          char(20)
declare @繳費(fèi)用戶數(shù) char(10)
declare @sql   char(2000)

declare cur_data cursor for
select   convert(varchar(10),到期時(shí)間,120) as 到期時(shí)間 ,片區(qū),count(distinct main_id) as 繳費(fèi)用戶數(shù)
from V_aipu_fee where 提交時(shí)間>=convert(varchar(10),getdate()-90,120) and 提交時(shí)間<convert(varchar(10),getdate()+1-90,120)
and 收費(fèi)類型='續(xù)費(fèi)收費(fèi)'
Group   by   convert(varchar(10),到期時(shí)間,120),片區(qū)
order   by   convert(varchar(10),到期時(shí)間,120)
open cur_data

fetch next from cur_data into @到期時(shí)間,@片區(qū),@繳費(fèi)用戶數(shù)
while(@@fetch_status = 0)
begin
        set @sql='update '+RTRIM(@片區(qū))+'實(shí)收='+RTRIM(@片區(qū))+'實(shí)收+'+RTRIM(@繳費(fèi)用戶數(shù))+' where 收費(fèi)日期='''+RTRIM(@到期時(shí)間)+''''

print @sql

fetch next from cur_data into @到期時(shí)間,@片區(qū),@繳費(fèi)用戶數(shù)
end

close cur_data
deallocate cur_data
 

 

【編輯推薦】

SQL中UNION指令的用法

SQL中where 1=1語(yǔ)句的作用

SQL數(shù)據(jù)庫(kù)中事務(wù)的ACID特性

SQL數(shù)據(jù)庫(kù)中的臨時(shí)表詳解

SQL循環(huán)語(yǔ)句示例

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-09-08 16:17:37

SQL循環(huán)語(yǔ)句

2010-09-08 16:38:13

SQL循環(huán)語(yǔ)句

2010-09-26 09:50:36

SQL Where子句

2010-09-08 17:10:24

SQL循環(huán)語(yǔ)句

2010-09-17 13:40:43

SQL更新

2010-09-10 14:33:32

SQL循環(huán)語(yǔ)句

2010-09-09 16:34:19

SQL循環(huán)while

2025-04-23 08:55:00

函數(shù)編程JavaScript

2010-11-18 09:19:10

Oracle循環(huán)語(yǔ)句

2023-01-31 13:55:33

Java循環(huán)語(yǔ)句

2010-09-03 14:39:15

SQLSELECT語(yǔ)句

2010-09-03 15:47:40

SQL語(yǔ)句鎖定

2023-03-30 09:10:06

SQLSELECTFROM

2010-08-26 10:45:33

死鎖SQL Server

2010-09-06 11:05:05

SQL SERVER語(yǔ)句

2010-07-08 13:26:02

SQL Server

2023-06-12 15:33:52

Scalafor循環(huán)語(yǔ)句

2010-09-03 11:25:58

SQL刪除

2010-09-17 16:03:17

鎖定SQL表

2010-11-11 11:37:22

SQL SELECT語(yǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)