2012-06-20 79 views
0

我目前正在學習如何在SQL Server環境中創建存儲過程。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) 

我所期待的是一個完整的結果表並記錄。相反,它看起來像查詢運行了很多次。我想知道的是:

爲什麼這似乎是多次運行?我沒有看到任何會在這個邏輯集中創建循環的東西。 (我嘗試了上述T-SQL代碼而沒有BEGIN和END語句,並且存在相同的行爲)

回答

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' 
+0

它只是如此.....簡單有時不是它。 –

+0

您可以使用關鍵字「Go」分隔批次 - 將它放在兩段代碼之間,告訴SQL它不應該一起運行。 –