是否可以屏蔽‘警告: 彙總或其它 SET 操作消除了空值。’一類警告資訊?

來源:互聯網
上載者:User

  由於不希望向執行預存程序的delphi程式返回警告資訊,所以請教高手:是否有可能在預存程序中進行設定,讓嚴重層級在11以下的警告資訊不報告。當然修改預存程序,使之不出現‘警告: 彙總或其它 SET 操作消除了空值。’資訊應該是最佳方法,但這不是我要的答案。
網友回複:有null時 isnull(,'')--轉換一下
網友回複:isnull(null,'')--Null 字元
網友回複:應該可以,使用某個開關屏蔽資訊.

我找找先.
網友回複:在開發中常碰到,在預存程序裡轉換一下空值為空白字元
網友回複:樓主說的應該是結果集的列有空值,這個與設定無關
網友回複: set ansi_warnings off

===================================================

網友回複:

SET ANSI_WARNINGS


指定幾種錯誤情況下的 SQL-92 標準行為。

文法
SET ANSI_WARNINGS { ON ¦ OFF }

注釋
SET ANSI_WARNINGS 影響以下情況:

當設定為 ON 時,假如彙總函式(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出現空值,將產生警告資訊。當設定為 OFF 時,不發出警告。

當設定為 ON 時,被零除錯誤和算術溢位錯誤將導致復原語句並建置錯誤資訊。當設定為 OFF 時,被零除錯誤和算術溢位錯誤將導致返回空值。假如在 character、Unicode 或 binary 列上嘗試執行 INSERT 或 UPDATE 操作,而這些列中的新值長度超出最大列大小,則被零除錯誤和算術溢位錯誤將導致返回空值。假如 SET ANSI_WARNINGS 為 ON,則按 SQL-92 標準的指定將取消 INSERT 或 UPDATE。將忽略字元列的尾隨空格,忽略二進位列的尾隨零。當設定為 OFF 時,資料將剪裁為列的大小,並且語句執行成功。

說明 在 binary 或 varbinary 資料轉換中發生截斷時,不管 SET 選項的設定是什麼,都不發出警告或錯誤資訊。

可以使用 sp_configure 的 user options 選項,為與伺服器的所有串連設定 ANSI_WARNINGS 的預設設定。有關更多資訊,請參見 sp_configure 或設定配置選項。

建立或操作索引檢視表或計算資料行上的索引時,SET ANSI_WARNINGS 必須為 ON。假如 SET ANSI_WARNINGS 為 OFF,計算資料行或索引檢視表上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。有關計算資料行上的索引檢視表和索引所必需的 SET 選項設定的更多資訊,請參見 SET 中的"使用 SET 語句時的注重事項"。

Microsoft? SQL Server? 包含 ANSI warnings 資料庫選項,該選項等同於 SET ANSI_WARNINGS。當 SET ANSI_WARNINGS 為 ON 時,如發生被零除、字串超出資料庫列及其它類似錯誤,將產生錯誤資訊或警告。當 SET ANSI_WARNINGS 為 OFF 時,不產生這些錯誤和警告。model 資料庫中的 SET ANSI_WARNINGS 預設值是 OFF。假如未指定,則應用 ANSI warnings 設定。假如 SET ANSI_WARNINGS 為 OFF,SQL Server 將使用 sp_dboption 的 ANSI warnings 設定。有關更多資訊,請參見 sp_dboption 或設定資料庫選項。

在執行分散式查詢時應將 ANSI_WARNINGS 設定為 ON。

SQL Server ODBC 驅動程式和用於 SQL Server 的 Microsoft OLE DB 提供者在串連時自動將 ANSI_WARNINGS 設定為 ON。這可以在 ODBC 資料來源、ODBC 串連特性或 OLE DB 串連屬性(它們在串連前在應用程式中設定)中進行配置。對來自 DB-Library 應用程式的串連,SET ANSI_WARNINGS 預設為 OFF。

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

SET ANSI_WARNINGS 的設定是在執行或運行時設定,而不是在分析時設定。

假如 SET ARITHABORT 或 SET ARITHIGNORE 為 OFF,並且 SET ANSI_WARNINGS 為 ON,則當碰到被零除或溢出錯誤時,SQL Server 仍返回錯誤資訊。

許可權
SET ANSI_WARNINGS 許可權預設授予所有使用者。

樣本
下例示範 SET ANSI_WARNINGS 為 ON 和 OFF 時的上述三種情況。

代碼

USE pubs 
GO 
CREATE TABLE T1 ( a int, b int NULL, c varchar(20) ) 
GO 
SET NOCOUNT ON 
GO 
INSERT INTO T1 VALUES (1, NULL, '') 
INSERT INTO T1 VALUES (1, 0, '') 
INSERT INTO T1 VALUES (2, 1, '') 
INSERT INTO T1 VALUES (2, 2, '') 
GO 
SET NOCOUNT OFF 
GO 

PRINT '**** Setting ANSI_WARNINGS ON' 
GO 

SET ANSI_WARNINGS ON 
GO 

PRINT 'Testing NULL in aggregate' 
GO 
SELECT a, SUM(b) FROM T1 GROUP BY a 
GO 

PRINT 'Testing String Overflow in INSERT' 
GO 
INSERT INTO T1 VALUES (3, 3, 'Text string longer than 20 characters') 
GO 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.