2017-10-31 7 views
0

を供給していなかったパラメータ「@name」を、期待してい'、それは供給されなかった。プロシージャまたは関数「System_Set_Cookiesは、」私は私のストアドプロシージャを実行していたとき、私はこのエラーを取得してい

私はすでに@nameを宣言していますが、それも整数の値を持っています。

**-- Executing my SP** 
DECLARE @name int, @Id int, @value nvarchar(255), @update bit; 
SET @name = 0; 
SET @Id = 0; 
SET @value = 'Development'; 
SET @update = 0; 
EXEC System_Set_Cookies;  

**-- Stored Procedure Query** 
ALTER PROCEDURE [dbo].[System_Set_Cookies] 
      -- Add the parameters for the stored procedure here 
      @name INT, 
      @Id INT, 
      @value NVARCHAR(255), 
      @update BIT 
     AS 
     BEGIN 
      -- SET NOCOUNT ON added to prevent extra result sets from 
      -- interfering with SELECT statements. 
      SET NOCOUNT ON; 

      -- Insert statements for procedure here 
      IF @update = 1 
       BEGIN 
        SELECT @Id = COOKIE_ID FROM tbl_Cookies WHERE cookie_name = @name; 

        UPDATE tbl_Cookies SET cookie_name = @name WHERE COOKIE_ID = @Id; 

        UPDATE tbl_Cookies_User SET cookie_value = @value WHERE cookie_id = @Id; 
       END 
      ELSE 
       BEGIN 
        INSERT INTO tbl_Cookies (cookie_name) VALUES (@name); 

        SELECT @Id = MAX(COOKIE_ID) FROM tbl_Cookies; 

        INSERT INTO tbl_Cookies_User (cookie_id, cookie_value) VALUES (@Id, @value); 
       END 
     END 
+0

また、使用しているdbmsにタグを付けます。そのコードは製品固有です。 – jarlh

+0

@YogeshSharma申し訳ありませんが、C#でも実行する必要があります。同じエラーが表示されるので、あなたの答えは不可能と思います。しかし、お返事ありがとうございます。 –

+0

@YogeshSharma MS SQL –

答えて

1

名前は、ストアドプロシージャのパラメータ名と一致してい変数を持っているからといって、SQL Serverは、必ずしもパラメータとしてその変数を渡したいことを前提としていません。あなたは、明示的でなければならない:

DECLARE @name int, @Id int, @value nvarchar(255), @update bit; 
SET @name = 0; 
SET @Id = 0; 
SET @value = 'Development'; 
SET @update = 0; 
EXEC System_Set_Cookies @name, @id, @value, @update; 

と名前にも一致している必要はありません。

DECLARE @OOname int, @Id int, @value nvarchar(255), @update bit; 
SET @OOname = 0; 
SET @Id = 0; 
SET @value = 'Development'; 
SET @update = 0; 
EXEC System_Set_Cookies @name = @OOname, @id, @value, @update; 

(C#のから呼び出すときは、必ず保存の名前だけにCommandTextを設定してくださいパラメータを入力してください。

関連する問題