現在、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コードを試しましたが、同じ動作が存在します)