执行存储过程时没有解决警告的方法? “警告:聚合或其他SET操作消除了空值”

时间:2013-11-27 21:41:58

标签: sql stored-procedures insert execute declare

我收到警告“聚合或其他SET操作消除了空值。”我找不到问题的根源。代码如下,我基本上想要做的是在表中插入值,基于33个存储过程的执行(执行的编码是相同的,所以我在下面给出几个例子)。我在调用的SP中查找了错误,但没有找到,因为它们都根据测试文件返回了预期的结果。

对解决方案的任何建议?

CODE:

    ALTER PROCEDURE [dbo].[SKL_SaveAdminKontroll_result]

    AS
    BEGIN
        SET NOCOUNT ON;

    declare @SQL VarChar(max)
    set @SQL = '

    DELETE FROM [dbo].[SKL_AdminKontroll_result]

    DECLARE @kommuner VARCHAR(300)
    DECLARE @landsting VARCHAR(300)
    DECLARE @tableName VARCHAR(100) 

    SET @kommuner=''select id from [StatistikinlamningAdminSKL].[dbo].[Enhet] WHERE [EnhetsTyp] = 1''
    SET @landsting=''select id from [StatistikinlamningAdminSKL].[dbo].[Enhet] WHERE [EnhetsTyp] = 2''
    SET @tableName=''GR_PS09_1''

        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde]) 
            EXEC dbo.SKL_admin_KN_aform @tableName, @kommuner
        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde]) 
            EXEC dbo.SKL_admin_KN_annan_AID @tableName, @kommuner
        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde]) 
            EXEC dbo.SKL_admin_KN_ansvar @tableName, @kommuner
        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde])    
            EXEC dbo.SKL_admin_LT_aform @tableName, @landsting
        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde])    
            EXEC dbo.SKL_admin_LT_annan_AID @tableName, @landsting
        INSERT INTO [dbo].[SKL_AdminKontroll_result] ([Värde],[Typ],Enhetsid,Adminkontroll,[Datum för hämtat värde])    
            EXEC dbo.SKL_admin_LT_ansvar @tableName, @landsting
    '

        EXEC (@SQL)
    END

致以最诚挚的问候,

汉纳斯

1 个答案:

答案 0 :(得分:1)

这只是一个警告,您的一个存储过程正在执行聚合,并且它让您知道聚合中未捕获NULL值。

你必须调查你的存储过程以找出聚合发生的位置,但是如果你得到你期望的结果那么就没有问题。

如果您愿意,可以取消警告:

SET ANSI_WARNINGS OFF 
GO

抑制警告可能是一种不好的做法。