啪啪拉拉噼里啪啦

          初學者天堂資料匯集

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            16 隨筆 :: 73 文章 :: 16 評論 :: 0 Trackbacks

          循環(huán)插入一個記錄 
           字段名     userid          username      age     tall        address
                                1                 a               20     12         中國
                                2                 b               24     34         中國
                                3                 c                34     23        美國
                                4                 d               34      23         日本


          1.在m_suer 表中循環(huán)插入 記錄。。。一直到i=10 位置

          declare @i int
          declare @j int
          select @i=4
          while @i<10

          begin
          insert into m_user(username,age,tall,address) values('bigdachun',@i,'uu','上海閔行區(qū)故美七村35號402室')
          select @i=@i+1
          end

          2.顯示 顯示所有記錄。。當address  是 ‘日本’  username  改為 ‘王八蛋’ 顯示

          use database
          select  username= case when addrsss='日本'  then '王八蛋' end from m_user

           

          posted on 2005-04-08 09:19 噼里啪啦的世界 閱讀(284) 評論(1)  編輯  收藏 所屬分類: SQL

          評論

          # re: sql 擴展 2005-04-08 09:23 噼里啪啦的世界
          SQL 流程控制命令
          作者:unknown 更新時間:2005-03-17


          Transact-SQL 語言使用的流程控制命令與常見的程序設計語言類似主要有以下幾種控制命令。

          4.6.1 IF…ELSE
          其語法如下:
          IF <條件表達式>
          <命令行或程序塊>
          [ELSE [條件表達式]
          <命令行或程序塊>]
          其中<條件表達式>可以是各種表達式的組合,但表達式的值必須是邏輯值“真”或“假”。ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE用來判斷當某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。如果不使用程序塊,IF或ELSE只能執(zhí)行一條命令。IF…ELSE可以進行嵌套。

          例4-9
          declare@x int,@y int,@z int
          select @x=1,@y=2, @z=3
          if@x>@y
          print'x>y' --打印字符串'x>y'
          else if@y>@z
          print'y>z'
          else print'z>y'
          運行結果如下
          z>y
          注意:在Transact-SQL中最多可嵌套32級。

          4.6.2 BEGIN…END
          其語法如下:
          BEGIN
          <命令行或程序塊>
          END
          BEGIN…END用來設定一個程序塊,將在BEGIN…END內的所有程序視為一個單元執(zhí)行BEGIN…END經常在條件語句,如IF…ELSE中使用。在BEGIN…END中可嵌套另外的BEGIN…END來定義另一程序塊。

          4.6.3 CASE
          CASE 命令有兩種語句格式:
          CASE <運算式>
          WHEN <運算式>THEN<運算式>

          WHEN<運算式>THEN<運算式>
          [ELSE<運算式>]
          END

          CASE
          WHEN <條件表達式> THEN <運算式>
          WHEN <條件表達式> THEN <運算式>
          [ELSE <運算式>]
          END
          CASE命令可以嵌套到SQL命令中。
          例4-10:調整員工工資,工作級別為“1”的上調8%,工作級別為“2”的上調7%,工作級別為“3”的上調6%,其它上調5%。
          use pangu
          update employee
          set e_wage =
          case
          when job_level = ’1’ then e_wage*1.08
          when job_level = ’2’ then e_wage*1.07
          when job_level = ’3’ then e_wage*1.06
          else e_wage*1.05
          end
          注意:執(zhí)行CASE子句時,只運行第一個匹配的子名。

          4.6.4 WHILE…CONTINUE…BREAK
          其語法如下:
          WHILE <條件表達式>
          BEGIN
          <命令行或程序塊>
          [BREAK]
          [CONTINUE]
          [命令行或程序塊]
          END
          WHILE 命令在設定的條件成立時會重復執(zhí)行命令行或程序塊。CONTINUE命令可以讓程序跳過CONTINUE 命令之后的語句,回到WHILE 循環(huán)的第一行命令。BREAK 命令則讓程序完全跳出循環(huán),結束WHILE 命令的執(zhí)行。WHILE 語句也可以嵌套。

          例4-11:
          declare @x int @y int @c int
          例4-11:
          declare @x int, @y int, @c int
          select @x = 1, @y=1
          while @x < 3
          begin
          print @x --打印變量x 的值
          while @y < 3
          begin
          select @c = 100*@ x+ @y
          print @c --打印變量c 的值
          select @y = @y + 1
          end
          select @x = @x + 1
          select @y = 1
          end
          運行結果如下
          1
          101
          102
          2
          201
          202

          4.6.5 WAITFOR
          其語法如下:
          WAITFOR {DELAY <‘時間’> | TIME <‘時間’>
          | ERROREXIT | PROCESSEXIT | MIRROREXIT}
          WAITFOR 命令用來暫時停止程序執(zhí)行,直到所設定的等待時間已過或所設定的時間已到才繼續(xù)往下執(zhí)行。其中‘時間’必須為DATETIME 類型的數(shù)據(jù),如:‘11:15:27’,
          但不能包括日期各關鍵字含義如下:


          DELAY 用來設定等待的時間最多可達24 小時;
          TIME 用來設定等待結束的時間點;
          ERROREXIT 直到處理非正常中斷;
          PROCESSEXIT 直到處理正常或非正常中斷;
          MIRROREXIT 直到鏡像設備失敗。
          例4-12 等待1 小時2 分零3 秒后才執(zhí)行SELECT 語句
          waitfor delay ’01:02:03’
          select * from employee

          例4-13:等到晚上11 點零8 分后才執(zhí)行SELECT 語句
          waitfor time ’23:08:00’
          select * from employee

          4.6.6 GOTO
          語法如下:
          GOTO 標識符
          GOTO 命令用來改變程序執(zhí)行的流程,使程序跳到標有標識符的指定的程序行再繼續(xù)往下執(zhí)行。作為跳轉目標的標識符可為數(shù)字與字符的組合,但必須以“:”結尾,如‘12:’或‘a_1:’。在GOTO 命令行,標識符后不必跟“:”。
          例4-14 分行打印字符‘1’、‘2’、‘3’、‘4’、‘5’
          declare @x int
          select @x = 1
          label_1
          print @x
          select @x = @x + 1
          while @x < 6
          goto label_1

          4.6.7 RETURN
          語法如下
          RETURN [整數(shù)值]
          RETURN 命令用于結束當前程序的執(zhí)行,返回到上一個調用它的程序或其它程序。在括號內可指定一個返回值。
          例4-15
          declare @x int @y int
          select @x = 1 @y = 2
          if x>y
          return 1
          else
          return 2
          如果沒有指定返回值,SQL Server 系統(tǒng)會根據(jù)程序執(zhí)行的結果返回一個內定值,如
          表4-5 所示。


          如果運行過程產生了多個錯誤,SQL Server系統(tǒng)將返回絕對值最大的數(shù)值;如果此時用戶此時定義了返回值,則以返回用戶定義的值。RETURN語句不能返回NULL值。




            回復  更多評論
            

          主站蜘蛛池模板: 金华市| 宁都县| 景东| 大同市| 扶余县| 聂荣县| 德惠市| 上思县| 旬阳县| 嫩江县| 九龙坡区| 伊宁县| 红桥区| 八宿县| 稷山县| 宽城| 山东| 剑河县| 汝城县| 老河口市| 三台县| 桐柏县| 太仆寺旗| 玛沁县| 汝南县| 湟源县| 鱼台县| 泗阳县| 安顺市| 界首市| 昌宁县| 和硕县| 新宁县| 合江县| 苏尼特左旗| 郧西县| 云浮市| 威远县| 万源市| 得荣县| 北碚区|