我在SQL Server中的通用存儲過程2005 DB空值的頂部()的參數存儲過程
它返回產品項目的名單在網站上使用,我想使它更可重複使用的跨越該網站,所以我可以用它來返回特定數量的產品。
存儲過程需要一個num項目參數來限制返回的項目數量,但我想知道是否有一種方法,我可以讓存儲過程接受一個空值參數,而不必訴諸維護兩條select語句或2個存儲過程。
這裏有一個剝離下來的例子用了WHERE子句等中多餘的東西..
create procedure GET_PRODUCTS
@num_items int = null
as
select TOP(@num_items) prod_id, prod_name, prod_price
from products
end
的問題是,我該如何選擇的所有記錄,如同上面子句中的情況下空是不存在被傳遞給proc。
我有幾個想法,但我不確定他們在SQL Server性能方面的大小,這正是我想評估的內容?
1)我可以檢查,如果參數是零,如果是重新分配給一個非常大的整數,它應比記錄的金額在表中(目前約5000和生長)
2)同每次但每次上面計算的產品表的大小
謝謝,但在我的崗位用於維護的原因上面提到我不想要做到這一點。 說這個查詢比我提供的維護這個查詢的2個版本的簡單例子更復雜,然後變得更加困難! –
在SQL的世界裏,你需要絕對的性能,你會發現重複的代碼是不可避免的。爲了讓單個代碼片段成爲所有交易的一部分,您最終會損害性能。對於快速查詢,我已經看到了一些小的,幾乎微不足道的變化,這些變化只會影響他們的性能。 –