-2

ストアド プロシージャを呼び出す C# コードを使用して、SQL テーブルに行を挿入しています。

C# コード:

SqlCommand myCommand = thisConnection.CreateCommand();
                myCommand.CommandText = "FederationUpdateCTRAndImpressionCountsForAllYPIds";
                myCommand.CommandType = CommandType.StoredProcedure;
                myCommand.Parameters.Add("@bid", SqlDbType.UniqueIdentifier);
                myCommand.Parameters.Add("@uid", SqlDbType.UniqueIdentifier);
                myCommand.Parameters.Add("@imp", SqlDbType.VarChar);
                myCommand.Parameters.Add("@ctr", SqlDbType.VarChar);

                while (myfederationReader.Read())
                {                      
                    myCommand.Parameters["@bid"].Value = myfederationReader["BusinessId"];
                    myCommand.Parameters["@uid"].Value = myfederationReader["UId"];
                    myCommand.Parameters["@imp"].Value = myfederationReader["Impression"];
                    myCommand.Parameters["@ctr"].Value = myfederationReader["CTR"];                    
                    rowsAffected = myCommand.ExecuteNonQuery();                        
                }

ストアド プロシージャ:

CREATE PROCEDURE [dbo].[FederationUpdateCTRAndImpressionCountsForAllYPIds]
    @bid uniqueidentifier,
    @uid uniqueidentifier,
    @imp varchar(255),
    @ctr varchar(255)
AS  BEGIN   
    UPDATE  BasicBusinessInformation
    SET     BasicBusinessInformation.CTR = @ctr , BasicBusinessInformation.Impression = @imp
    WHERE   BasicBusinessInformation.BusinessId = @bid AND  BasicBusinessInformation.UId = @uid 
    END

実行すると、次のエラーが報告されます。

プロシージャーにパラメーターがなく、引数が指定されました

4

3 に答える 3

0

次のようにこのコマンドを起動する前に、リーダーからデータを取得してみてください

1)Fetch data from reader and store in list or datatable
2)For loop on list or datatable
3)in for loop fire this command
于 2013-06-10T13:01:20.160 に答える
-3

以下を動かしてみる

SqlCommand myCommand = thisConnection.CreateCommand();
                myCommand.CommandText = "FederationUpdateCTRAndImpressionCountsForAllYPIds";
                myCommand.CommandType = CommandType.StoredProcedure;
                myCommand.Parameters.Add("@bid", SqlDbType.UniqueIdentifier);
                myCommand.Parameters.Add("@uid", SqlDbType.UniqueIdentifier);
                myCommand.Parameters.Add("@imp", SqlDbType.VarChar);
                myCommand.Parameters.Add("@ctr", SqlDbType.VarChar);

while ループで、異なる結果が得られるかどうかを確認します。

于 2013-06-10T12:47:34.660 に答える