2011-11-29 68 views
3

我有一個非常大的應用程序,它會創建頭痛來改變對這個過程的每一個調用,所以我正在嘗試做一個可選參數的過程。下面是該過程的最上面兩行這是在存儲過程中使用可選參數的正確方法嗎?

ALTER PROCEDURE [dbo].[sp_get_entity_list] 
@entityid int , @entitycat int, @adminTab bit = 0, @root int = 0 

當調用代碼的程序,它通常被稱爲

"EXEC sp_get_entity_list " & EntityID & ", " & EntityCAT 

,但在少數情況下,我需要通過一個位類型的參數來顯示它來自不同的位置 - 我打電話通過使用

"EXEC sp_get_entity_list " & EntityID & ", " & EntityCAT & ",1" 

我做錯了什麼?我不確定這是否是傳遞可選參數的正確方法,我希望將adminTab設置爲false(或null,無所謂),除非我傳遞可選參數。謝謝。

+0

你試過了嗎?怎麼了? – BNL

+2

**什麼**數據庫和哪個**版本** ?? 「SQL」=結構化查詢語言 - 那不是數據庫.....並且它是** IS ** SQL Server(看起來像它) - 那麼你應該避免** sp_前綴 - 該前綴是由微軟保留其自己的系統存儲過程,並會導致SQL Server首先在「主」數據庫中搜索此存儲過程(不利於您的性能!) –

回答

6

我認爲它能夠更好地包括每個參數的名稱執行存儲過程的時候一樣:

EXEC sp_get_entity_list @entityid=" + EntityID + ", @entitycat=" + EntityCAT 

這意味着SQL確切地知道哪些參數指的是。

因此,如果您有可選參數,你並不需要包括每一個,如果你想使用默認值:

EXEC sp_get_entity_list @EntityID=" & EntityID & ", @root=1 
相關問題