首页 > 解决方案 > 如何在 SQL 存储过程中编写条件?

问题描述

我有这个存储过程:

IF OBJECT_ID('[dbo].[GetSessionInfo]') IS NOT NULL
DROP PROCEDURE [dbo].[GetSessionInfo]
GO
CREATE PROCEDURE [dbo].[GetSessionInfo](
    @SessionID int)

WITH ENCRYPTION
AS
    BEGIN
    SET NOCOUNT ON;

    SELECT [cfgGroup].[Name] as GroupName,[cfgSession].[Name],[cfgSession].[GroupId],[cfgSession].[IsDisabled],
    [cfgSession].[IsTestSession],[cfgSession].[NextExecutionTime],[cfgSession].[SType],[cfgSession].[DaysToKeep],
    [cfgSchedule].[ID],[cfgSchedule].[SessionId],[cfgSchedule].[MinuteFreq],[cfgSchedule].[HourFreq],
    [cfgSchedule].[Daily],[cfgSchedule].[WeekFreq],[cfgSchedule].[StartDate],[cfgSchedule].[EndDate],
    [cfgSchedule].[NoOrderDays],[cfgSchedule].[OrderDays],[cfgData].[ID],[cfgData].[SessionId],[cfgData].[StationExclude],
    [cfgData].[StationFilter],[cfgData].[ConsoleExclude],[cfgData].[ConsoleFilter],[cfgData].[MedClassesExclude],[cfgData].[MedClassesFilter],[cfgData].[PickAreasExclude],
    [cfgData].[PickAreasFilter], [cfgData].[DeviceType]
    
    FROM [cfgGroup],[cfgSession],[cfgSchedule],[cfgData]
    
    WHERE [cfgGroup].[ID] = [cfgSession].[GroupId]
    
    AND
    [cfgSession].[ID] = @SessionID
    
    AND
    [cfgSchedule].[SessionId] = [cfgSession].[ID]
    
    AND
    [cfgData].[SessionId] = [cfgSchedule].[SessionId]

END
GO

我需要根据其中的内容更改存储过程返回的数据[cfgSession].[SType]

[cfgSession].[SType]只能是SendReceive

如果[cfgSession].[SType]是,Send那么我需要它来返回SELECT上面语句中的当前内容。

如果[cfgSession].[SType]是,Receive那么我需要它返回SELECT上面当前的内容减去[cfgData]字段。

标签: tsqlstored-procedures

解决方案


推荐阅读