0

我目前正在学习如何在 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 代码,并且存在相同的行为)

4

1 回答 1

2

您已将对 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'
于 2012-06-20T19:42:14.033 回答