精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >SET ARITHABORT 創(chuàng)建者:webmaster 更新時(shí)間:2006-02-16 15:51

    在查詢執(zhí)行過(guò)程中發(fā)生溢出或被零除錯(cuò)誤時(shí)終止查詢。



    語(yǔ)法


    SET ARITHABORT { ON | OFF }



    注釋


    如果 SET ARITHABORT 為 ON,則這些錯(cuò)誤情況將導(dǎo)致查詢或批處理終止。如果在事務(wù)內(nèi)發(fā)生錯(cuò)誤,則回滾事務(wù)。如果 SET ARITHABORT 為 OFF 并且發(fā)生了這些錯(cuò)誤之一,則顯示一條警告消息,并給算術(shù)運(yùn)算的結(jié)果賦以空值。



    說(shuō)明  如果 SET ARITHABORT 和 SET ARITHIGNORE 都沒(méi)有設(shè)置,則 Microsoft® SQL Server™ 將在執(zhí)行查詢后返回 NULL 和一條警告信息。



    如果 SET ARITHABORT 為 OFF 并且在對(duì)表達(dá)式的求值過(guò)程中 INSERT、DELETE 或 UPDATE 語(yǔ)句遇到算術(shù)錯(cuò)誤(溢出、被零除或域錯(cuò)誤),SQL Server 將插入或更新 NULL 值。如果目標(biāo)列不可為空,則插入或更新操作失敗并且用戶收到錯(cuò)誤信息。



    如果 SET ARITHABORT 或 SET ARITHIGNORE 為 OFF,并且 SET ANSI_WARNINGS 為 ON,則當(dāng)遇到被零除或溢出錯(cuò)誤時(shí),SQL Server 仍返回錯(cuò)誤信息。



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



    在計(jì)算列或索引視圖上創(chuàng)建或操作索引時(shí),SET ARITHABORT 必須為 ON。如果 SET ARITHABORT 為 OFF,計(jì)算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語(yǔ)句將失敗。有關(guān)計(jì)算列上的索引視圖和索引所必需的 SET 選項(xiàng)設(shè)置的更多信息,請(qǐng)參見(jiàn) SET 中的"使用 SET 語(yǔ)句時(shí)的注意事項(xiàng)"。



    權(quán)限


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



    示例


    下例演示兩種 SET ARITHABORT 設(shè)置下的被零除和溢出錯(cuò)誤。



    -- Create tables t1 and t2 and insert data values.
    CREATE TABLE t1 (a tinyint, b tinyint)
    CREATE TABLE t2 (a tinyint)
    GO
    INSERT INTO t1 VALUES (1, 0)
    INSERT INTO t1 VALUES (255, 1)
    GO

    PRINT '*** SET ARITHABORT ON'
    GO
    -- SET ARITHABORT ON and testing.
    SET ARITHABORT ON
    GO

    PRINT '*** Testing divide by zero during SELECT'
    GO
    SELECT a/b
    FROM t1
    GO
    PRINT '*** Testing divide by zero during INSERT'
    GO
    INSERT INTO t2
    SELECT a/b
    FROM t1
    GO

    PRINT '*** Testing tinyint overflow'
    GO
    INSERT INTO t2
    SELECT a+b
    FROM t1
    GO

    PRINT '*** Resulting data - should be no data'
    GO
    SELECT *
    FROM t2
    GO

    -- Truncate table t2.
    TRUNCATE TABLE t2
    GO

    -- SET ARITHABORT OFF and testing.
    PRINT '*** SET ARITHABORT OFF'
    GO
    SET ARITHABORT OFF
    GO
    -- This works properly.
    PRINT '*** Testing divide by zero during SELECT'
    GO
    SELECT a/b
    FROM t1
    GO
    -- This works as if SET ARITHABORT was ON.
    PRINT '*** Testing divide by zero during INSERT'
    GO
    INSERT INTO t2
    SELECT a/b
    FROM t1
    GO
    PRINT '*** Testing tinyint overflow'
    GO
    INSERT INTO t2
    SELECT a+b
    FROM t1
    GO

    PRINT '*** Resulting data - should be 0 rows'
    GO
    SELECT *
    FROM t2
    GO
    -- Drop tables t1 and t2.
    DROP TABLE t1
    DROP TABLE t2
    GO
    相關(guān)文章
    本頁(yè)查看次數(shù):