【问题标题】:SQL Server Repeatedly runs a query not in a loopSQL Server重复运行不在循环中的查询
【发布时间】:2023-03-21 15:11:01
【问题描述】:

我目前正在学习如何在 SQL Server 环境中创建存储过程。

我有一个正在使用的查询块,它与 Joes2Pros SQL 服务器系列一起使用。

T-SQL 语法目前如下所示:

Use JProCo
GO


CREATE PROCEDURE sp_GetProductListByCategory @Category VarChar(50)
AS
BEGIN
    SELECT ProductID, ProductName, RetailPrice
    FROM dbo.CurrentProducts
    WHERE Category = @Category
END

EXECUTE sp_GetProductListByCategory 'No-Stay'

运行此代码会得到如下所示的结果:

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

(80 row(s) affected)

我所期待的是一个充满结果和记录的表格。相反,查询似乎运行了很多次。我想知道的是:

为什么这似乎运行了很多次?我没有看到任何会在这个逻辑集中创建循环的东西。 (我尝试了上面没有 BEGIN 和 END 语句的 T-SQL 代码,并且存在相同的行为)

【问题讨论】:

    标签: sql-server-2008 tsql


    【解决方案1】:

    您已将对 SP 的调用包含在 SP 本身中。批量创建 SP。

    CREATE PROCEDURE sp_GetProductListByCategory @Category VarChar(50)
    AS
    BEGIN
        SELECT ProductID, ProductName, RetailPrice
        FROM dbo.CurrentProducts
        WHERE Category = @Category
    END
    

    然后调用它。

    EXECUTE sp_GetProductListByCategory 'No-Stay'
    

    【讨论】:

    • 您可以使用关键字“Go”分隔批次 - 将其放在两段代码之间,以告诉 SQL 它不应该一起运行。
    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2022-01-17
    • 2015-10-13
    相关资源
    最近更新 更多