標(biāo)準(zhǔn)SQL和T-SQL之間有很多區(qū)別——太多了,這里就不說了。還有,如果你在SQL Server上工作, 那么使用這些私有的擴(kuò)展是有好處的。
檢查所使用的語句是否標(biāo)準(zhǔn)
/*
標(biāo)準(zhǔn)SQL和T-SQL之間有很多區(qū)別——太多了,這里就不說了。還有,如果你在SQL Server上工作,
那么使用這些私有的擴(kuò)展是有好處的。由于許多SQL Server的特性的本質(zhì),你不使用非標(biāo)準(zhǔn)的命令的話,
將會有很多強(qiáng)大的功能無法實(shí)現(xiàn)。如果你想要看看你的SQL是否符合標(biāo)準(zhǔn),你可以使用SET FIPS_FLAGGER
命令
*/
SET FIPS_FLAGGER ‘level’
/*
‘ level ‘
對 FIPS 127-2 標(biāo)準(zhǔn)的遵從級別,將檢查所有數(shù)據(jù)庫操作是否達(dá)到該級別。如果數(shù)據(jù)庫操作與選定的 ISO 標(biāo)準(zhǔn)級別沖突,則 Microsoft SQL Server 將生成一個警告。
level 必須是下列值中的一個。
值 說明
ENTRY 檢查是否遵從 ISO 入門級標(biāo)準(zhǔn)。
FULL
檢查是否遵從 ISO 完全級標(biāo)準(zhǔn)。
INTERMEDIATE 檢查是否遵從 ISO 中間級標(biāo)準(zhǔn)。
OFF
不檢查是否遵從標(biāo)準(zhǔn)。
*/
/*
SET FIPS_FLAGGER 的設(shè)置是在分析時設(shè)置,而不是在執(zhí)行或運(yùn)行時設(shè)置。在分析時進(jìn)行設(shè)置意味著:SET 語句只要出現(xiàn)在或存儲過程中即生效,與代碼執(zhí)行實(shí)際上是否到達(dá)該點(diǎn)無關(guān);并且 SET 語句在任何語句執(zhí)行之前生效。例如,假設(shè) SET 語句在 IF…ELSE 語句塊中,而在執(zhí)行過程中從未到達(dá)過該語句塊,但由于分析了 IF…ELSE 語句塊,因此 SET 語句仍生效。
如果在存儲過程中設(shè)置 SET FIPS_FLAGGER,則從存儲過程返回控制后將還原 SET FIPS_FLAGGER 的值。因此,在動態(tài) SQL 中指定的 SET FIPS_FLAGGER 語句對動態(tài) SQL 語句之后的任何語句無效。
*/