I have below SQL function which I am calling from a view
ALTER FUNCTION [dbo].[GetModulesforTesCaseID]
(@TestCaseID numeric(18))
RETURNS VARCHAR(1000)
AS
BEGIN
declare @Modules VARCHAR(1000)
select @Modules = SUBSTRING(
(SELECT ',' + cast (S.MODULENAME as varchar)
FROM MODULE s JOIN EFFMODFORTESTCASE EMTC ON S.MODULEID = EMTC.MODULEID
JOIN TESTCASE TC ON TC.TESTCASEID = EMTC.TESTCASEID
where tc.testcaseid = @TestCaseID
ORDER BY s.MODULENAME
FOR XML PATH('')),2,200000)
if @Modules is null BEGIN
set @Modules = SELECT M.MODULENAME FROM MODULE M JOIN SUBMODULESFORMODULE SFM ON SFM.MODULEID = M.MODULEID
JOIN EFFSUBMODFORTESTCASE ESMTC ON ESMTC.SUBMODULEID = SFM.SUBMODULEID WHERE TESTCASEID = @TestCaseID
END
return @Modules
end
I am getting
Msg 156, Level 15, State 1, Procedure GetModulesforTesCaseID, Line 16
Incorrect syntax near the keyword ‘SELECT’
please help me in correcting syntax error at the If condition
The error is when you assign the value to the
@Modulesvariable inside yourIF. Try this instead (you need to make sure that the result for thatSELECTreturns only one row):