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

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

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

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評(píng)論 :: 0 Trackbacks

    SET  NOCOUNT

    SET NOCOUNT
    使返回的結(jié)果中不包含有關(guān)受 Transact-SQL 語句影響的行數(shù)的信息。

    語法
    SET NOCOUNT { ON | OFF }

    注釋
    當(dāng) SET NOCOUNT 為 ON 時(shí),不返回計(jì)數(shù)(表示受 Transact-SQL 語句影響的行數(shù))。當(dāng) SET NOCOUNT 為 OFF 時(shí),返回計(jì)數(shù)。

    即使當(dāng) SET NOCOUNT 為 ON 時(shí),也更新 @@ROWCOUNT 函數(shù)。

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

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

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

    權(quán)限
    SET NOCOUNT 權(quán)限默認(rèn)授予所有用戶。

    結(jié)論:我們應(yīng)該在存儲(chǔ)過程的頭部加上SET NOCOUNT ON 這樣的話,在退出存儲(chǔ)過程的時(shí)候加上 SET NOCOUNT OFF這樣的話,以達(dá)到優(yōu)化存儲(chǔ)過程的目的。

    多說兩句:

    1:在查看SqlServer的幫助的時(shí)候,要注意“權(quán)限”這一節(jié),因?yàn)槟承┱Z句是需要一定的權(quán)限的,而我們往往忽略。

    2:@@ROWCOUNT是返回受上一語句影響的行數(shù),包括找到記錄的數(shù)目、刪除的行數(shù)、更新的記錄數(shù)等,不要認(rèn)為只是返回查找的記錄數(shù)目,而且@@ROWCOUNT要緊跟需要判斷語句,否則@@ROWCOUNT將返回0。

    3:如果使用表變量,在條件表達(dá)式中要使用別名來替代表名,否則系統(tǒng)會(huì)報(bào)錯(cuò)。

    4:在CUD類的操作中一定要有事務(wù)處理。

    5:使用錯(cuò)誤處理程序,用來檢查 @@ERROR 系統(tǒng)函數(shù)的 T-SQL 語句 (IF) 實(shí)際上在進(jìn)程中清除了 @@ERROR 值,無法再捕獲除零之外的任何值,必須使用 SET 或 SELECT 立即捕獲錯(cuò)誤代碼。

    SET ANSI_NULLS

    SQL-92 標(biāo)準(zhǔn)要求在對(duì)空值進(jìn)行等于 (=) 或不等于 (<>) 比較時(shí)取值為 FALSE。當(dāng) SET ANSI_NULLS 為 ON 時(shí),即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會(huì)返回零行。

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

    注意:
    SQL Server 是將空字符串解釋為單個(gè)空格還是解釋為真正的空字符串,由兼容級(jí)別設(shè)置控制。如果兼容級(jí)別小于或等于 65,則 SQL Server 會(huì)將空字符串解釋為單個(gè)空格。如果兼容級(jí)別等于 70,則 SQL Server 會(huì)將空字符串解釋為空字符串。有關(guān)設(shè)置兼容級(jí)別的詳細(xì)信息,請(qǐng)參閱 sp_dbcmptlevel (Transact-SQL)

     

     

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

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

    為使腳本按預(yù)期運(yùn)行,不管 ANSI_NULLS 數(shù)據(jù)庫選項(xiàng)或 SET ANSI_NULLS 的設(shè)置如何,請(qǐng)?jiān)诳赡馨罩档谋容^中使用 IS NULL 和 IS NOT NULL。

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

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

    注意:
    ANSI_NULLS 是在處理計(jì)算列或索引視圖的索引時(shí)必須設(shè)置為所需值的七個(gè) SET 選項(xiàng)之一。還必須將選項(xiàng) ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 設(shè)置為 ON,而必須將 NUMERIC_ROUNDABORT 設(shè)置為 OFF。

     

     

    SQL Server 的 SQL Native Client ODBC 驅(qū)動(dòng)程序和 SQL Native Client OLE DB 訪問接口在連接時(shí)會(huì)自動(dòng)將 ANSI_NULLS 設(shè)置為 ON。該設(shè)置可以在 ODBC 數(shù)據(jù)源、ODBC 連接屬性或 OLE DB 連接屬性(它們?cè)谶B接到 SQL Server 實(shí)例之前在應(yīng)用程序中設(shè)置)中進(jìn)行配置。SET ANSI_NULLS 的默認(rèn)值為 OFF。

    當(dāng) SET ANSI_DEFAULTS 為 ON 時(shí),將啟用 SET ANSI_NULLS。

    SET ANSI_NULLS 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。



    SET QUOTED_IDENTIFIER

    使 SQL Server 2005 遵從關(guān)于引號(hào)分隔標(biāo)識(shí)符和文字字符串的 SQL-92 規(guī)則。由雙引號(hào)分隔的標(biāo)識(shí)符可以是 Transact-SQL 保留關(guān)鍵字,也可以包含 Transact-SQL 標(biāo)識(shí)符語法約定通常不允許的字符。

    主題鏈接圖標(biāo) Transact-SQL 語法約定

    語法語法
    備注備注

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

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

    當(dāng) SET QUOTED_IDENTIFIER 為 OFF 時(shí),表達(dá)式中的文字字符串可以由單引號(hào)或雙引號(hào)分隔。如果文字字符串由雙引號(hào)分隔,則可以在字符串中包含嵌入式單引號(hào),如省略號(hào)。

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

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

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

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

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

    當(dāng) SET ANSI_DEFAULTS 為 ON時(shí),將啟用 SET QUOTED_IDENTIFIER。

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

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

    posted on 2007-08-10 11:04 渠上月 閱讀(824) 評(píng)論(0)  編輯  收藏 所屬分類: sql (sqlServer)
    主站蜘蛛池模板: 一级毛片视频免费| 真人做A免费观看| 亚洲免费视频在线观看| 最新欧洲大片免费在线| 日本一区二区在线免费观看| 亚洲av综合色区| 成全视频在线观看免费高清动漫视频下载| 国产精品亚洲精品日韩电影| 99久久精品国产亚洲| 国产青草视频免费观看97 | 蜜桃成人无码区免费视频网站 | 国产亚洲精品国产福利在线观看| 国产亚洲精品a在线观看app| 拨牐拨牐x8免费| a视频在线免费观看| 亚洲人成色99999在线观看| 国产精品久久久亚洲| 色吊丝最新永久免费观看网站 | 免费视频爱爱太爽了| eeuss影院www天堂免费| 亚洲精品伊人久久久久| 亚洲精品国产精品乱码视色| 日本成人免费在线| 日本最新免费网站| 免费看无码特级毛片| 久久人午夜亚洲精品无码区 | 成人电影在线免费观看| 美女黄网站人色视频免费| 亚洲AV无码一区二区三区在线| 亚洲午夜国产精品无码| 小小影视日本动漫观看免费| 91免费在线播放| 国产麻豆一精品一AV一免费| 九九视频高清视频免费观看| 在线观看亚洲AV每日更新无码| 亚洲欧洲日韩不卡| 亚洲国产精品无码专区| 亚洲中文字幕无码专区| 亚洲?v无码国产在丝袜线观看| 成年大片免费视频| 免费在线看v网址|