<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rex

    ——生命不止,奮斗不息。
    posts - 27, comments - 8, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    關(guān)于在存儲過程中的語句

    Posted on 2007-12-25 13:31 W.R 閱讀(673) 評論(0)  編輯  收藏

    查找MS SQL SERVER 2005的相關(guān)文檔后記錄這些:
    1.ANSI_NULLS

    1SET ANSI_NULLS ON
    2GO

    上面第一行是 指定與空值一起使用時的等于 (=) 和不等于 (<>) 比較運算符的 SQL-92 標準行為。
    SQL SERVER 的聯(lián)機叢書里提道:后續(xù)版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發(fā)工作中使用該功能,并著手修改當前還在使用該功能的應(yīng)用程序。
    用法解釋:SQL-92 標準要求在對空值進行等于 (=) 或不等于 (<>) 比較時取值為 FALSE。當 SET ANSI_NULLS 為 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會返回零行。

    當 SET ANSI_NULLS 為 OFF 時,等于 (=) 和不等于 (<>) 比較運算符不遵從 SQL-92 標準。使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不為 XYZ_value 也不為 NULL 的行。

    當 SET ANSI_NULLS 為 ON 時,所有對空值的比較均取值為 UNKNOWN。當 SET ANSI_NULLS 為 OFF 時,如果數(shù)據(jù)值為 NULL,則所有數(shù)據(jù)對空值的比較將取值為 TRUE。如果未指定 SET ANSI_NULLS,則應(yīng)用當前數(shù)據(jù)庫的 ANSI_NULLS 選項設(shè)置。有關(guān) ANSI_NULLS 數(shù)據(jù)庫選項的詳細信息,請參閱 ALTER DATABASE (Transact-SQL)設(shè)置數(shù)據(jù)庫選項。

    僅當某個比較操作數(shù)是值為 NULL 的變量或文字 NULL 時,SET ANSI_NULLS ON 才會影響比較。如果比較雙方是列或復合表達式,則該設(shè)置不會影響比較。

    為使腳本按預期運行,不管 ANSI_NULLS 數(shù)據(jù)庫選項或 SET ANSI_NULLS 的設(shè)置如何,請在可能包含空值的比較中使用 IS NULL 和 IS NOT NULL。

    在執(zhí)行分布式查詢時應(yīng)將 SET ANSI_NULLS 設(shè)置為 ON。

    對計算列或索引視圖創(chuàng)建或更改索引時,SET ANSI_NULLS 也必須為 ON。如果 SET ANSI_NULLS 為 OFF,則針對表(包含計算列或索引視圖的索引)的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。SQL Server 將返回一個錯誤消息,該錯誤消息會列出所有違反所需值的 SET 選項。另外,在執(zhí)行 SELECT 語句時,如果 SET ANSI_NULLS 為 OFF,則 SQL Server 將忽略計算列或視圖的索引值并解析選擇操作,就好像表或視圖沒有這樣的索引一樣。
    ANSI_NULLS 是在處理計算列或索引視圖的索引時必須設(shè)置為所需值的七個 SET 選項之一。還必須將選項 ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 設(shè)置為 ON,而必須將 NUMERIC_ROUNDABORT 設(shè)置為 OFF。

    2.SET QUOTED_IDENTIFIER

    SET QUOTED_IDENTIFIER 為 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。當 SET QUOTED_IDENTIFIER 為 OFF 時,標識符不可加引號,且必須符合所有 Transact-SQL 標識符規(guī)則。有關(guān)詳細信息,請參閱標識符。文字可以由單引號或雙引號分隔。

    當 SET QUOTED_IDENTIFIER 為 ON(默認值)時,由雙引號分隔的所有字符串都被解釋為對象標識符。因此,加引號的標識符不必符合 Transact-SQL 標識符規(guī)則。它們可以是保留關(guān)鍵字,并且可以包含 Transact-SQL 標識符中通常不允許的字符。不能使用雙引號分隔文字字符串表達式,而必須用單引號括住文字字符串。如果單引號 (') 是文字字符串的一部分,則可以由兩個單引號 (") 表示。當對數(shù)據(jù)庫中的對象名使用保留關(guān)鍵字時,SET QUOTED_IDENTIFIER 必須為 ON。

    當 SET QUOTED_IDENTIFIER 為 OFF 時,表達式中的文字字符串可以由單引號或雙引號分隔。如果文字字符串由雙引號分隔,則可以在字符串中包含嵌入式單引號,如省略號。

    當在計算列或索引視圖上創(chuàng)建或更改索引時,SET QUOTED_IDENTIFIER 必須為 ON。如果 SET QUOTED_IDENTIFIER 為 OFF,則計算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。有關(guān)計算列的索引視圖和索引所必需的 SET 選項設(shè)置的詳細信息,請參閱 SET (Transact-SQL) 中的“使用 SET 語句時的注意事項”。

    在進行連接時,SQL 本機客戶端 ODBC 驅(qū)動程序和 SQL Server 的 SQL Native Client OLE DB Provider 自動將 QUOTED_IDENTIFIER 設(shè)置為 ON。這可以在 ODBC 數(shù)據(jù)源、ODBC 連接特性或 OLE DB 連接屬性中進行配置。對來自 DB-Library 應(yīng)用程序的連接,SET QUOTED_IDENTIFIER 默認設(shè)置為 OFF。

    創(chuàng)建表時,即使此時將 QUOTED IDENTIFIER 選項設(shè)置為 OFF,該選項在表的元數(shù)據(jù)中仍始終存儲為 ON。

    創(chuàng)建存儲過程時,將捕獲 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 設(shè)置,并用于該存儲過程的后續(xù)調(diào)用。

    在存儲過程內(nèi)執(zhí)行 SET QUOTED_IDENTIFIER 時,其設(shè)置不更改。

    當 SET ANSI_DEFAULTS 為 ON時,將啟用 SET QUOTED_IDENTIFIER。

    SET QUOTED_IDENTIFIER 還與 ALTER DATABASE 的 QUOTED_IDENTIFER 設(shè)置相對應(yīng)。有關(guān)數(shù)據(jù)庫設(shè)置的詳細信息,請參閱 ALTER DATABASE (Transact-SQL)設(shè)置數(shù)據(jù)庫選項。

    SET QUOTED_IDENTIFIER 是在分析時進行設(shè)置的。在分析時進行設(shè)置意味著:SET 語句只要出現(xiàn)在批處理或存儲過程中即生效,與代碼執(zhí)行實際上是否到達該點無關(guān);并且 SET 語句在任何語句執(zhí)行之前生效。


    3.SET NOCOUNT ON
    使返回的結(jié)果中不包含有關(guān)受 Transact-SQL 語句影響的行數(shù)的信息。
    當 SET NOCOUNT 為 ON 時,不返回計數(shù)(表示受 Transact-SQL 語句影響的行數(shù))。當 SET NOCOUNT 為 OFF 時,返回計數(shù)。

    即使當 SET NOCOUNT 為 ON 時,也更新 @@ROWCOUNT 函數(shù)(返回受上一語句影響的行數(shù))。

    當 SET NOCOUNT 為 ON 時,將不給客戶端發(fā)送存儲過程中的每個語句的 DONE_IN_PROC 信息。當使用 Microsoft SQL Server 提供的實用工具執(zhí)行查詢時,在 Transact-SQL 語句(如 SELECT、INSERT、UPDATE 和 DELETE)結(jié)束時將不會在查詢結(jié)果中顯示"nn rows affected"。

    如果存儲過程中包含的一些語句并不返回許多實際的數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。

    SET NOCOUNT 設(shè)置是在執(zhí)行或運行時設(shè)置,而不是在分析時設(shè)置。

    4.臨時表的使用
    a.臨時表其實是放在數(shù)據(jù)庫tempdb里的一個用戶表,當不再使用時會自動刪除。
    b.一種是以#(局部)或##(全局)開頭的表,這種表在會話期間存,會話結(jié)束則自動刪除;二者在名稱、可見性和可用性上均不相同。本地臨時表的名稱以單個符號   (#)   打頭;它們僅對當前的用戶連接是可見的;當用戶從   Microsoft&reg;   SQL   Server™   2000   實例斷開連接時被刪除。全局臨時表的名稱以數(shù)學符號   (##)   打頭,創(chuàng)建后對任何用戶都是可見的,當所有引用該表的用戶從   SQL   Server   斷開連接時被刪除。
    c.另一種,如果創(chuàng)建時不以#或##開頭,而用tempdb.TempTable來命名它,則該表可在數(shù)據(jù)庫重啟前一直存在.



    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲精品第五页中文字幕| 国产亚洲精品久久久久秋霞| 亚洲精品视频在线观看视频| 无码av免费一区二区三区试看| 亚洲一区二区三区无码中文字幕| 十八禁的黄污污免费网站| 亚洲精品NV久久久久久久久久| 香港一级毛片免费看| 亚洲精品偷拍视频免费观看| 日韩毛片在线免费观看| 亚洲七七久久精品中文国产| 好吊色永久免费视频大全 | 久久精品亚洲福利| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲a∨无码精品色午夜| 热99re久久免费视精品频软件| 亚洲国产欧美国产综合一区| 国产最新凸凹视频免费| 免费国产黄网站在线观看动图| 亚洲不卡AV影片在线播放| 岛国精品一区免费视频在线观看 | 亚洲人成在线播放网站岛国| 88av免费观看| 亚洲AV无码专区国产乱码不卡| 国产免费观看a大片的网站| 一级免费黄色大片| 亚洲综合日韩中文字幕v在线 | 亚洲一线产区二线产区区| 国产精品国产免费无码专区不卡| 一级片在线免费看| 亚洲欧洲在线观看| 免费黄色小视频网站| 国产日韩AV免费无码一区二区三区| 老司机亚洲精品影院| 免费毛片在线播放| 国产好大好硬好爽免费不卡| 亚洲综合激情五月丁香六月| 国产日产亚洲系列最新| 麻豆一区二区免费播放网站| 美女黄频视频大全免费的| 亚洲一区中文字幕久久|