sr0007: استخدام ISNULL(عمود, default_value) تشغيل أعمدة قبول القيم الخالية في التعبيرات

RuleId

sr0007

Category

Microsoft.الأداء

تعطيل تغيير

عدم فصل

السبب

ولم يستخدم دالة ISNULL في المقارنة التعبير الموقع قد يحتوي عمود على القيمة فارغة (NULL).

وصف القاعدة

إذا كان الرمز الخاص بك بمقارنة قيمتين NULL أو القيمة فارغة (NULL) مع أية القيمة غير ذلك، سوف تعليمات برمجية بإرجاع نتيجة غير مجهول.

كيف إلى الإصلاح انتهاكات

يجب أن وضوح الإشارة إلى كيفية معالجة قيم الفارغة (NULL) في التعبيرات مقارنة بواسطة التفاف كل عمود يحتوي على القيمة فارغة (NULL) في دالة ISNULL.

عند إلى منع التحذيرات

نظراً لنتائج المقارنة غير معرفة، يجب عدم منع ظهور هذا التحذير.

مثال

يوضح هذا المثال بتعريف جدول بسيط و الثاني الإجراءات المخزنة. الجدول يحتوي على عمود، [c2]، التي يمكن أن تحتوي على القيمة فارغة (NULL). يقارن إجراء أول، [ProcedureWithWarning], [c2] إلى القيمة ثابتة. إجراء الثاني بإصلاح هذه المشكلة بالتفاف [c2] مع استدعاء دالة ISNULL.

CREATE TABLE [dbo].[Table1]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT
)
ON [PRIMARY] 

CREATE PROCEDURE [dbo].[ProcedureWithWarning]
AS
BEGIN
SELECT COUNT(*) FROM [dbo].[Table1]
 WHERE [c2] > 2;
END

CREATE PROCEDURE [dbo].[ProcedureFixed]
AS
BEGIN
SELECT COUNT(*) FROM [dbo].[Table1]
 WHERE ISNULL([c2],0) > 2;
END

راجع أيضًا:

المبادئ

‏‏يتم الآن التحليل? قاعدة بيانات تعليمات برمجية إلى تحسين جودة تعليمات برمجية