这是在存储过程中使用可选参数的正确方法吗?

时间:2011-11-29 15:14:11

标签: sql-server stored-procedures

我有一个非常大的应用程序,它会让每次调用此过程都变得很头疼,所以我试图为该过程创建一个可选参数。以下是程序的前两行

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,无关紧要),除非我传递可选参数。感谢。

1 个答案:

答案 0 :(得分:6)

我认为在执行存储过程时最好包含每个参数的名称,如:

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

这意味着SQL确切地知道您所引用的参数。

因此,如果你有可选参数,如果你想使用默认值,则不需要包含每一个参数:

EXEC sp_get_entity_list @EntityID=" & EntityID & ", @root=1