I want to call this procedure that sends one value that can be NULL or any int value.
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId =@SubDomainId
I simply want to use this single query rather than what i m doing right now in below given code.
I searched for this how could i do this then i got this Link.
According to this I have to set ANSI_NULLS OFF
I am not able to set this inside this procedure before executing my sql query and then reset it again after doing this.
ALTER PROCEDURE [Tags].[spOnlineTest_SubDomainSelect]
@SubDomainId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @SubDomainId IS NULL
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId IS NULL
ELSE
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId =@SubDomainId
END
What will be the better practice to do deal with ANSI_NULLS or Using If Else
SET ANSI_NULLS is ony defined at stored proc create time and cannot be set at run time.
From CREATE PROC
The same applies to
SET QUOTED_IDENTIFIERIn this case, use IF ELSE because SET ANSI_NULLS will be ON in the future.
Or Peter Lang’s suggestion.
To be honest, expecting
SubDomainId = @SubDomainIdto work when @SubDomainId is NULL is not really correct usage of NULL…