2016-04-07 59 views
0

我正在使用MS SQL Server 2014 ..我有存儲過程爲;如何在存儲過程中檢查結果集爲空

CREATE PROCEDURE getId(
     @Api_Id INT 
     ,@xmlRequest VARCHAR(max) out) 
AS 
BEGIN 
    SELECT xmlRequest FROM Api_request 
     WHERE Api_id = @Api_id 
END; 

我想補充的邏輯,如果下面的語句任何回報:

SELECT xmlRequest FROM Api_request WHERE Api_id = @Api_id

對於如:

CREATE PROCEDURE getId(
     @Api_Id INT 
     ,@xmlRequest VARCHAR(max) out) 
AS 
BEGIN 
    SELECT xmlRequest FROM Api_request 
     WHERE Api_id = @Api_id 
    /*if result set empty*/ 
    /* will add some logic here */ 
END; 

如何檢查結果集是空的。

回答

2

您可以使用IF NOT EXISTS

IF NOT EXISTS (SELECT xmlRequest FROM Api_request 
       WHERE Api_id = @Api_id) 
BEGIN 
    /*if result set empty*/ 
    /* will add some logic here */ 
END 
+0

感謝您的答覆。 –

+0

@somtrivedi很高興我能夠幫助。如果它幫助你解決你的問題,請將它標記爲或接受任何其他答案。 –

1

一種方法是使用@@ROWCOUNT。這將返回最後一條語句影響的行數。

IF (@@ROWCOUNT) > 0 
    BEGIN 
     SELECT 'Populated Resultset'; 
    END 
ELSE 
    BEGIN 
     SELECT 'Empty Resultset'; 
    END 
; 

我個人更喜歡@ GiorgosBetsos的方法。將IF,NOT EXISTS和QUERY合併成一個語句更簡潔,更易於遵循。你

0

也可以做這樣的:

IF (SELECT TOP 1 xmlRequest FROM Api_request WHERE Api_id = @Api_id) IS NULL 
BEGIN 
    /*if result set empty*/ 
    /* will add some logic here */ 
END 
相關問題