• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0
            原地:http://topic.csdn.net/u/20090216/10/fca7534f-e881-4e37-b9b7-8fe141ee186b.html
            現(xiàn)在學(xué)一下常用的存儲過程的語法,只要花一點點時間學(xué)習(xí)下,就能用存儲過程實現(xiàn)很復(fù)雜的功能,可以少寫很多代碼。

            為了方便說明,數(shù)據(jù)庫使用SQL Server的示例數(shù)據(jù)庫,Northwind和pubs,如果SQL Server中沒有的話,可以按下面的方法安裝

            1,下載SQL2000SampleDb.msi,下載地址是:
            http://www.microsoft.com/downloads/details.aspx?FamilyId=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en  
            2,安裝后,到默認(rèn)目錄C:\SQL Server 2000 Sample Databases 有instnwnd.sql ,instpubs.sql兩個文件  
            3,在sql server中運行這兩個sql 就可以創(chuàng)建你Northwind和pubs數(shù)據(jù)庫。

            下面開始學(xué)T-SQL的語法



            一.注釋


            -- 單行注釋,從這到本行結(jié)束為注釋,類似C++,c#中//
            /* … */ 多行注釋,類似C++,C#中/* … */





            二.變量(int, smallint, tinyint, decimal,float,real, money ,smallmoney, text ,image, char, varchar。。。。。。)
            語法:
            DECLARE  
            {
            {@local_variable data_type}
            } [,...n]
            例如:


            declare @ID int --申明一個名為@ID的變量,類型為int型

            三.在SQL Server窗口中打印出變量的值


            語法:
            PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr



            四.變量賦值


            例如:

            --從數(shù)據(jù)表中取出第一行數(shù)據(jù)的ID,賦值給變量@id,然后打印出來
            Declare @ID int
            Set @ID = (select top(1) categoryID from categories)
            Print @ID

            在SQL中,我們不能像代碼那樣直接給變量賦值,例如@id = 1,如果要達到這樣的功能,可以這樣寫:

            Declare @ID int
            Set @ID = (select 1) -- 類似 @ID=1
            Select @id=1 -- 類似 @ID=1
            Print @ID


            五.變量運算(+,-,*,/,……)


            以下必要時候省略變量申明
            Set @ID = (select 1+5) --類似 @ID=1+5
            Set @ID=(select 1-@ID) --類似 @ID=1-@ID

            六.比較操作符
            • > (greater than).  
            • < (less than).  
            • = (equals).  
            • <= (less than or equal to).  
            • >= (greater than or equal to).  
            • != (not equal to).  
            • <> (not equal to).  
            • !< (not less than).  
            • !> (not greater than).  
            沒什么說的




            七.語句塊:Begin … end
            將多條語句作為一個塊,類似與C++,C#中的{ }
            例如:
            Begin
            Set @ID1 = (select 1)
            Set @ID2 = (select 2)
            End

            八.If, if…else…
            語法:
            IF Boolean_expression
            {sql_statement | statement_block}
            [ELSE
            {sql_statement | statement_block}]
            例如:

            If @id is not null
            Print ‘@id is not null
            if @ID = 1
            begin
            Set @ID = (select 1 + 1)
            end
            else
            begin  
            set @ID=(select 1+2)
            end


            上面的例子用到了比較操作符,語句塊,和IF的語法。



            九.執(zhí)行其他存儲過程 EXEC
            例如

            EXEC dbo.[Sales by Year] @Beginning_Date=’1/01/90’, @Ending_Date=’1/01/08’



            十.事務(wù)

            語法:


            BEGIN TRAN[SACTION] [transaction_name | @tran_name_variable]


            例如

            BEGIN TRAN
            -- 做某些操作,例如Insert into …
            if @@error <> 0
            BEGIN
            ROLLBACK TRAN
            END
            else
            BEGIN
            COMMIT TRAN
            END

            十一.游標(biāo)

            我們可以在存儲過程中用Select語句取出每一行數(shù)據(jù)進行操作,這就需要用到游標(biāo)。


            語法:
            DECLARE cursor_name CURSOR
            [LOCAL | GLOBAL]
            [FORWARD_ONLY | SCROLL]
            [STATIC | KEYSET | DYNAMIC | FAST_FORWARD]
            [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
            [TYPE_WARNING]
            FOR select_statement

            [FOR UPDATE [OF column_name [,...n]]]




            例如:

            DECLARE @au_id varchar(11), @au_fname varchar(20) –申明變量
            --申明一個游標(biāo)
            DECLARE authors_cursor CURSOR FOR  
            SELECT au_id, au_fname FROM authors  
            --打開游標(biāo)
            OPEN authors_cursor
            --取出值
            FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname
            --循環(huán)取出游標(biāo)的值
            WHILE @@FETCH_STATUS = 0
            BEGIN
            Print @au_id
            Print @au_fname
            Print ‘ ’
            FETCH NEXT FROM authors_cursor  
            INTO @au_id, @au_fname
            END
            CLOSE authors_cursor –關(guān)閉游標(biāo)
            DEALLOCATE authors_cursor --釋放游標(biāo)
            我覺得上面的是存儲過程常用的一些東東,如果要更深入的了解,更詳細(xì)的幫助,請參考SQL Server的幫助文檔
            posted on 2011-04-18 17:19 luis 閱讀(146) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2011年4月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            色综合久久中文字幕无码| 久久综合噜噜激激的五月天| 久久国产精品成人免费| 久久精品国产一区| 性做久久久久久久久| 99久久精品国产一区二区| 国产精品久久久亚洲| 国产精品日韩深夜福利久久| 国产亚洲色婷婷久久99精品91 | 精品国产一区二区三区久久蜜臀| 久久人人爽人人澡人人高潮AV| 欧洲性大片xxxxx久久久| 欧美噜噜久久久XXX| 久久久久亚洲AV成人网| 无码人妻久久一区二区三区免费丨| 久久99国产精品二区不卡| 婷婷久久综合九色综合绿巨人 | 亚洲国产精品18久久久久久| 青青青国产精品国产精品久久久久 | 精品无码久久久久久久久久 | 久久精品国产亚洲AV影院| 欧美日韩中文字幕久久伊人| 精品久久人人爽天天玩人人妻| 精品久久久久久久中文字幕| 久久亚洲精精品中文字幕| 亚洲精品国产自在久久| 国产成人久久久精品二区三区| 久久人妻少妇嫩草AV无码专区| 亚洲国产成人久久综合野外| 色综合久久久久网| 久久91精品国产91久久户| 91精品国产综合久久精品| 久久午夜夜伦鲁鲁片免费无码影视 | 久久精品国产99久久无毒不卡 | 久久久久久久久久久免费精品| 精品一区二区久久| 久久精品视频网| 91精品婷婷国产综合久久| 久久se精品一区精品二区| 国产精品久久久久9999高清| 久久综合精品国产二区无码|