如何检查结果集在存储过程中为空

时间:2016-04-07 09:39:23

标签: sql-server stored-procedures

我正在使用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     在哪里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;

如何检查结果集是空的。

3 个答案:

答案 0 :(得分:2)

您可以使用java.*

IF NOT EXISTS

答案 1 :(得分:1)

一种方法是使用@@ROWCOUNT。这将返回受最后一个语句影响的行数。

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

我个人更喜欢@ GiorgosBetsos的方法。将IF,NOT EXISTS和QUERY组合成一个语句更简洁,更容易理解。

答案 2 :(得分: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