0

現在、SQLServer環境でストアドプロシージャを作成する方法を学んでいます。

Joes2ProsSQLサーバーシリーズに続くクエリブロックを使用しています。

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 に答える