2017-01-05 5 views
0

誰もが、私はそれを実行すると、このコードでエラーを見つけるために私を助けることができるMSのSQL Serverのストアドプロシージャ

「プロシージャまたは関数 『dep_cnt』は供給されなかったパラメータ 『@cnt』を見込んで言います"

コロンボの部署数をカウントしたいと思います。

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

あなたは* '* @ cnt'を渡す必要がありますが、すぐに上書きされるのは無意味ですか?戻り値または 'output'パラメータを使用して返す* –

答えて

1

あなたのストアドプロシージャの呼び出しに値を@cntパラメータを渡すなど、手続き定義の中@cntパラメータにNULLのデフォルトを設定することができ、次のいずれか

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

すばらしいことに...ありがとう、この答えが働いた –

関連する問題