2017-06-14 111 views
1

存儲過程: -從sql server中的特定列中選擇值?

CREATE PROCEDURE [dbo].[RT_SelectAll_BatchHistory_By_SchedulerTime] 
@Skip INT, 
@Take INT, 
@ResultCode AS INT = 0 OUTPUT, 
@ResultText AS VARCHAR(50)=NULL OUTPUT 
AS 
BEGIN 
SET NOCOUNT ON; 
BEGIN TRY 
SELECT 
     [SchedulerTime] 
     ,[ExecutedOn] 
     ,[FinishedOn] 
FROM [T_Scheduler] WITH(NOLOCK) 
WHERE [IsActive] = 1 
ORDER BY [SchedulerID] 
OFFSET @Skip ROWS 
FETCH NEXT @Take ROWS ONLY 
SET @ResultCode = 0 
SET @ResultText='SUCCESS' 
END TRY 
BEGIN CATCH 
SET @ResultCode = -1 
SET @ResultText='ERROR' 
END CATCH 
END 

在這個存儲過程要選擇所有的SchedulerTime列行和空值從executedOn和finishedOn。

怎麼能達到這個條件?

回答

1
SELECT 
     [SchedulerTime] 
     ,[ExecutedOn] 
     ,[FinishedOn] 
FROM [T_Scheduler] WITH(NOLOCK) 
WHERE [IsActive] = 1 AND [ExecutedOn] IS NULL AND [FinishedOn] IS NULL 

這工作得很好對我來說

0

考慮到你都知道髒的讀取你的代碼,你可以嘗試這樣的事情..

SELECT 
     [SchedulerTime] 
     ,[ExecutedOn] = NULL 
     ,[FinishedOn] = NULL 
FROM [T_Scheduler] WITH(NOLOCK) 
WHERE [IsActive] = 1 
ORDER BY [SchedulerID] 
0

使用NULLIF在你的SELECT查詢

SELECT 
     [SchedulerTime] 
     ,NULLIF([ExecutedOn],[ExecutedOn]) AS [ExecutedOn] 
     ,NULLIF([FinishedOn],[FinishedOn]) AS [FinishedOn] 
FROM [T_Scheduler] WITH(NOLOCK) 
WHERE [IsActive] = 1 
ORDER BY [SchedulerID] 
-----------------------------------------------  
SELECT 
     [SchedulerTime] 
     ,NULL AS [ExecutedOn] 
     ,NULL AS [FinishedOn] 
FROM [T_Scheduler] WITH(NOLOCK) 
WHERE [IsActive] = 1 
ORDER BY [SchedulerID] 
相關問題