簡體   English   中英

關鍵字“ SELECT”附近的語法不正確

[英]Incorrect syntax near the keyword 'SELECT'

我從視圖中調用下面的SQL函數

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

我正進入(狀態

消息156,級別15,狀態1,過程GetModulesforTesCaseID,第16行
關鍵字“ SELECT”附近的語法不正確

請幫助我糾正If條件下的語法錯誤

錯誤是當您將值分配給IF@Modules變量時。 請改用此方法(您需要確保SELECT結果僅返回一行):

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
            SELECT @Modules = M.MODULENAME 
            FROM MODULE M 
            INNER JOIN SUBMODULESFORMODULE SFM 
                ON SFM.MODULEID = M.MODULEID 
            INNER JOIN EFFSUBMODFORTESTCASE ESMTC 
                ON ESMTC.SUBMODULEID = SFM.SUBMODULEID 
            WHERE TESTCASEID = @TestCaseID
    END 

return @Modules
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM