2017-01-05 8 views
0

Любой человек может помочь мне найти ошибку в этом коде, когда я исполню это говоритMS SQL Server-Хранимая процедура

«Процедура или функция„dep_cnt“ожидает параметр„@cnt“, который не поставлялся «.

Я хочу сосчитать количество отделов в colombo.

CREATE PROCEDURE dep_cnt 
@dep_loc varchar(10), 
@cnt int 
AS 
SELECT @Cnt = count(*) FROM Department WHERE Dept_Loc = @dep_loc 

И

EXEC dep_cnt @dep_loc = 'colombo' 
+0

Я думаю, что сообщение об ошибке довольно ясное – Lamak

+0

Вам нужно передать * in * '@ cnt', но его бессмысленно, так как его сразу же переписали? Чтобы * вернуть * значение использовать 'return' или' output' paramater –

ответ

1

Вы можете передать параметр @cnt со значением для вашей хранимой процедуры, или установить значение по умолчанию NULL параметру @cnt внутри определения процедуры, как:

CREATE PROCEDURE dep_cnt 
    @dep_loc varchar(10) 
    , @cnt int = NULL 
AS 
    SELECT @Cnt = count(*) 
    FROM Department 
    WHERE Dept_Loc = @dep_loc 

EXEC dep_cnt @dep_loc = 'colombo' 

Хотя я не вижу в этом большой ценности, возможно, вы ищете @cnt в качестве выходного/возвращаемого значения?

CREATE PROCEDURE dep_cnt 
    @dep_loc varchar(10) 
    , @cnt int OUTPUT 
AS 
    SELECT @Cnt = count(*) 
    FROM Department 
    WHERE Dept_Loc = @dep_loc 

DECLARE @cntResult int  

EXEC dep_cnt @dep_loc = 'colombo', @cnt = @cntResult OUTPUT 

Дополнительную информацию можно найти здесь returning data from a stored procedure.

+0

Это должно быть '@cnt int = NULL', а не' @cnt int NULL', это вызовет ошибку и ошибка. –

+0

@ M.Ali Спасибо, что указали, что вне –

+0

спасибо и су ... много, этот ответ сработал –

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