2010-06-23 2 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 перед установкой. –

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

+0

Действительно. Я добавил немного больше к началу моего примера. У меня есть что-то в основном то же самое, и оно устанавливает значение. – Kyra

+0

@ User228777 Да, к сожалению, нет способа сделать это. – Baaju

Смежные вопросы