2015-08-19 3 views
0

Я хочу создать хранимую процедуру SQL Server (2008 на данный момент), в которой определены параметры, если они не были представлены. Google и MS.com предлагают следующее, но оно не работает:SQL Server Сохраненная процедура Значения по умолчанию

ALTER PROCEDURE [Contracts].test2 
    @first int = 6, -- default value of 6 
    @second int,  
    @third int  
AS 
BEGIN 
    SELECT @first, @second, @third; 
END 

Результаты: 0 | введенное значение | Введенное значение

Спасибо заранее

+0

Вы можете включить код, который вы использовали для вызова этого устройства? Вы называете это с помощью T-SQL или чего-то другого, подобного C#? Если вы используете именованные параметры и исключаете необязательный параметр, это должно работать нормально. –

+0

как вы называете эту процедуру? –

+0

Хорошо работает в SQL Fiddle (минус точки с запятой): http://www.sqlfiddle.com/#!3/fb85f/1. –

ответ

0

Хм, спасибо за обратную связь, я использую Navicat 11 для создания/теста. , , когда я открываю тот же (Navicat создан) SP в SSMS он открывается как:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [Contracts].[test2] 
    @first int = 6, -- NULL default value 
    @second int, -- Default value of 2 
    @third int  -- Default value of 3 
AS 

BEGIN 

    SELECT @first, @second, @third; 

END 

, а затем запускает «правильно» (в то время как в Navicat она по какой-то причине возвращает ноль для @first когда никакого значения парам не было введено).

+0

PS спасибо за головы до скрипта SQL !!! –

0

Вы должны вызвать хранимую процедуру, как это, она будет работать.

exec test2 @second=1, @third=2 
Смежные вопросы