2010-06-23 92 views
0

我有一个存储过程的参数,我希望从表中指定默认值,我该怎么做?存储过程可选参数的默认值分配

ALTER PROCEDURE [DBO].[Test] 

     @planId int = 1 (This I can do) 

但我想这样做

@planId int = (Select Id from Table1 Where name = ‘ABC’) ‘ Assign default id from a table 

回答

3

如果你想这样做,只是分配0开始,并在程序的第一行这个值写入该变量。

ALTER PROCEDURE [DBO].[Test] 
@planId int = 0 
AS 
BEGIN 
SET @planId = (Select Id from Table1 Where name = ‘ABC’) 
... 
... 
... 
END 
+1

我会用'NULL'而不是'0'默认,再不用为去检查它的在设置之前为NULL。 – 2010-06-23 14:10:02

1

在存储过程中,您可以声明和设置值。在这种情况下,您可以设置@planId,无论你在体内要则:

CREATE PROCEDURE procedureName 
    @planId int = null output 
AS 
    IF @planId = null 
     Begin 
     SET @planId = (Select Id from Table1 Where name = ‘ABC’) 
     End 
    ELSE --> then they gave you the value 
+0

这就是我现在正在做的事情,所以我不能在声明中分配缺省值(从表中选择)值。 - 谢谢 – user228777 2010-06-23 14:28:29

+0

真的。我在示例的开头添加了一些内容。我有一些基本相同的东西,它确定了价值。 – Kyra 2010-06-23 14:54:41

+0

@ User228777很遗憾,没有办法做到这一点。 – Baaju 2010-06-23 14:56:12