2011-11-29 37 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 
相关问题