2012-05-06 17 views
1

SQL Serverストアドプロシージャに問題があります。私は、パラメータを指定すると、パラメータがnullではないが、私はエラーストアドプロシージャパラメータが提供されていませんでした。エラー

私のC#のコードはここにある 'パラメータが供給されていない' しまったものの:

staffInfo.DeleteCommand = "deleteStaff"; 
staffInfo.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure; 
staffInfo.DeleteParameters.Add("tcId", stafftc); 
staffInfo.Delete(); 

ストアドプロシージャ:

ALTER PROCEDURE dbo.deleteStaff 
(
    @tcId varchar(11) 
) 
AS 
BEGIN 
    DECLARE @memId int; 
SELECT @memId = staffId FROM staff WHERE TCid = @tcId; 
DELETE FROM member WHERE memId = @memId; 
END 

削除操作は完全に行われます。しかし、私はこのエラーをとにかく持っています。あなたの提案は何ですか?

+0

MSDNには、「パラメータが指定されていません」というエラーに関する注意事項があります。「SqlDataSourceコントロールにバインドするデータバインドコントロールのBoundFieldコントロールにDeleteParametersコレクションのパラメータ名と一致する名前がないことを確認してください。バインドされたフィールドと同じ名前のパラメータはSQLコマンドから除外され、「パラメータが指定されていません」というエラーが発生する可能性があります。 – Steve

+0

いいえ、うまくいきませんでした。その結果、プロシージャーが削除されました。この処理を問合せで処理しようとしました。それは動作し、私は自分の道を続けます。 – Shnkc

+0

なぜSQL Serverプロファイラを使用せず、実行のために送信されたクエリをチェックするのですか?いくつかの情報を得るかもしれません –

答えて

2

削除操作が成功した場合、(特に例外の詳細を指定していないため)このようなことが起こりうると思われる唯一の方法は、別のストアドプロシージャを呼び出す削除のトリガーがあることです失敗する。

+0

これは非常に意味のある答えです。しかし、トリガーはありませんがカスケーディングはありません。メンバー表の行が削除されると、3つの他の表も影響を受けます。ただし、関連する行も削除されます。 – Shnkc

+0

これらの*子テーブルのトリガーは削除されますか? –

+0

いいえ、ありません – Shnkc

関連する問題