2014-01-08 75 views
0

我有這個疑問,我想創建「」可變至極:SQL查詢如何讓局部變量

SELECT *, (rowNum/5) + 1 as page 
FROM (
    SELECT *, Row_Number() OVER (ORDER BY items.id_item ASC) as rowNum 
    FROM items INNER JOIN utilizadores ON items.autor = utilizadores.id_user 
) x 
WHERE (rowNum/1000) + 1 = 1 

我怎樣才能得到它在查詢做出過程搜索。

CREATE PROCEDURE get_items_by_page 
@page int 
AS 
SELECT *, (rowNum/5) + 1 as page 
FROM (
    SELECT *, Row_Number() OVER (ORDER BY items.id_item ASC) as rowNum 
    FROM items INNER JOIN utilizadores ON items.autor = utilizadores.id_user 
) x 
WHERE (rowNum/1000) + 1 = 1 //the required condition to query is in bottom 
GO 

and page = @page;

+0

如果你只是在你的WHERE子句中添加AND頁面@頁面,會發生什麼? – Matthew

+0

這沒有意義。您只選擇一個值,並希望它等於輸入參數。有一部分邏輯不能很好地解釋,因爲如果唯一結果是輸入參數 – Hogan

+0

無效的列名'page',則不需要查詢。 – Severiano

回答

2
CREATE PROCEDURE get_items_by_page 
@page int 
AS 
SELECT x.*, (rowNum/5) + 1 as page 
FROM (
    SELECT *, Row_Number() OVER (ORDER BY items.id_item ASC) as rowNum 
    FROM items INNER JOIN utilizadores ON items.autor = utilizadores.id_user 
) x 
WHERE (rowNum/5) + 1 = @page 
GO