【问题标题】:MSSQL Check if a SELECT statement will have rows, if yes, then execute the same SELECT statementMSSQL 检查 SELECT 语句是否有行,如果有,则执行相同的 SELECT 语句
【发布时间】:2023-09-28 04:52:01
【问题描述】:

我想在存储过程中执行一个 SELECT 语句,但在执行之前,我必须知道它是否会有行。如果没有,我必须跳转到指定的标签,并设置输出。 我当前的方法工作得很好,但是在几个过程中我需要更多这些,我想知道我是否可以在没有代码重复的情况下做到这一点(并且没有 Ctrl+C、Ctrl+V) (这只是一个示例代码,不是我的真实代码)

IF EXISTS (
        SELECT *
          FROM sample s
          INNER JOIN sample2 s2 ON s.Id = s2.sId
          WHERE s2.number = @input
        )
        BEGIN
            INSERT INTO @Temp
            SELECT *
              FROM sample s
              INNER JOIN sample2 s2 ON s.Id = s2.sId
              WHERE s2.number = @input
        END
    ELSE
        BEGIN
            SET @noresult = 1;
            GOTO label;
        END

感谢您的帮助!

【问题讨论】:

    标签: sql sql-server select stored-procedures


    【解决方案1】:

    为什么不直接加载表格然后检查呢?

    INSERT INTO @Temp
        SELECT *
        FROM sample s JOIN
             sample2 s2 ON s.Id = s2.sId
        WHERE s2.number = @input;
    
    IF NOT EXISTS (SELECT 1 FROM @temp)
    BEGIN
        SET @noresult = 1;
        GOTO label;
    END;
    

    如果所有表的@noresult 相同,则在加载一堆临时表后,您可以只拥有一个if

    【讨论】:

    • 谢谢!这太明显了,我什至没有考虑。 :)
    最近更新 更多