Does SP return null like ZERO?

Using a stored procedure, I have a rather complicated SQL statement that returns the COUNT value as a pseudo column. In many cases, the result will be "null". This causes problems in my application, so I wonder if it is possible by default to return "null" as "0" from a stored procedure?

Thanks.

UPDATE

I need to apply ISNULL to the following statement:

    select recip_Chosen, recip_CampaignId) AS ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen

What should be something like:

    select recip_Chosen, ISNULL(count(recip_CampaignId),0) AS ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen

However, this still returns null (s) in the ChosenCount column. Any ideas?

UPDATE

, , . , , . "ChosenCount", "0" Null. SP 1 TBL_CAMPAIGNS_CHARITIES, TBL_CAMPAIGNS.

CREATE PROCEDURE web.getPublicCampaignData
   (
   @campaign BIGINT
   )
AS
BEGIN

SELECT * 
FROM TBL_CAMPAIGNS C
INNER JOIN TBL_MEMBERS M
    ON C.campaign_MemberId = M.members_Id
INNER JOIN TBL_CAMPAIGNS_CHARITIES CC
    ON C.campaign_Key = CC.camchar_CampaignID
INNER JOIN TBL_CHARITIES CH
    ON CC.camchar_CharityID = CH.cha_Key
LEFT OUTER JOIN (
    select recip_Chosen, count(recip_CampaignId) as ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen
) CRC
on CH.cha_Key = CRC.recip_Chosen
WHERE C.campaign_Key = @campaign;

END
+3
4

:

RETURN ISNULL(yourvalue, 0)

:

  • "yourvalue" ( , @variable) NOT NULL,

  • "yourvalue" IS NULL, ( "0" )

, . , :

CREATE PROCEDURE dbo.DoMyCount()
RETURNS INT
AS BEGIN
   DECLARE @MyCountVariable INT

   SET @MyCountVariable = SELECT COUNT(*)......... -- whatever you do here

   RETURN ISNULL(@MyCountVariable, 0)
END

dbo.DoMyCount ( ), "0" () - NULL.

, , NON-NULL INT .

:

, ISNULL - LEFT OUTER JOIN. , LEFT OUTER JOIN β†’ ISNULL .

proc:

CREATE PROCEDURE web.getPublicCampaignData(@campaign BIGINT)
AS BEGIN
  SELECT
     (list of fields), ISNULL(CRC.ChosenCount, 0), .....
  FROM TBL_CAMPAIGNS C
  INNER JOIN TBL_MEMBERS M 
     ON C.campaign_MemberId = M.members_Id
  INNER JOIN TBL_CAMPAIGNS_CHARITIES CC 
     ON C.campaign_Key = CC.camchar_CampaignID
  INNER JOIN TBL_CHARITIES CH 
    ON CC.camchar_CharityID = CH.cha_Key
  LEFT OUTER JOIN (
    select recip_Chosen, count(recip_CampaignId) as ChosenCount
    from TBL_CAMPAIGNRECIPIENTS
    WHERE recip_CampaignId =  @campaign
    group by recip_Chosen
  ) CRC on CH.cha_Key = CRC.recip_Chosen
  WHERE 
     C.campaign_Key = @campaign;
END

, CH.cha_Key = CRC.recip_Chosen LEFT OUTER JOIN NULL, , ChosenCount = NULL "0" .

+10

isnull SQL Server, coalesce, . isnull:

return coalesce(yourvalue, 0)

, :

return isnull(yourvalue, 0)

coalesce(yourvalue, backupval, 0)

isnull(isnull(yourvalue, backupval), 0)

, coalesce , .

, , - , ??

+5
select isnull(sum(size),0) as total_size from my_table where is_valid = 1
+2

ISNULL, , , SQLServer.

COALESCE - ANSI

ISNULL COALESCE

+2

Source: https://habr.com/ru/post/1715710/


All Articles