Передача параметров в хранимую процедуру в C # - PullRequest
4 голосов
/ 24 марта 2011

Как я могу отправить три параметра a хранимой процедуре в sql?

Вот моя ошибка : В процедуре или функции GetIslemIdleri указано слишком много аргументов.

Это моя хранимая процедура:

CREATE PROCEDURE GetIslemDetayIdleri 

@islemId int,
@dovizTanim nvarchar(10),
@yapilanIslemTuru nvarchar(20)
AS
BEGIN
    SET NOCOUNT ON;

SELECT ([t0].[TOPLAMTUTAR]) + ([t0].[KDVTUTAR]) AS [value]
FROM [dbo].[TBLP1ISLEMDETAY] AS [t0]
INNER JOIN [dbo].[TBLP1ISLEM] AS [t1] ON [t1].[ID] = [t0].[ISLEM_ID]
WHERE ([t0].[ISLEM_ID] = @islemId) AND 
      ([t0].[FIYATBIRIM] = @dovizTanim) AND 
      ([t1].[YAPILANISLEM] = @yapilanIslemTuru) AND 
      ([t0].[KDVDAHILMI] = 0)
END

Вот мой код:

        decimal kurToplamQuery = 0;
        string connString = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer1"].ConnectionString;

        SqlConnection sqlConn = new SqlConnection(connString);
        sqlConn.Open();

        SqlCommand cmd;

        cmd = new SqlCommand("GetIslemIdleri", sqlConn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new SqlParameter("@islemId", SqlDbType.Int)).Value = islemId;
        cmd.Parameters.Add(new SqlParameter("@dovizTanim", SqlDbType.NVarChar)).Value = dovizTanim;
        cmd.Parameters.Add(new SqlParameter("@yapilanIslemTuru", SqlDbType.NVarChar)).Value = yapilanIslemTipi;

        using (var reader = cmd.ExecuteReader())*//error occurs here*
        {
            while (reader.Read())
            {
                kurToplamQuery = reader.GetDecimal(0);                    
            }
        }
        sqlConn.Close();
        return kurToplamQuery;

Спасибо за помощь.

Ответы [ 3 ]

5 голосов
/ 24 марта 2011

Хранимая процедура называется GetIslemDetayIdleri, но код использует хранимую процедуру с именем GetIslemIdleri. Может быть, последний имеет меньше параметров, чем первый, и вы хотели вызвать первый в коде?

3 голосов
/ 24 марта 2011

GetIslemDetayIdleri! = GetIslemIdleri

2 голосов
/ 24 марта 2011

Ваша хранимая процедура: GetIslemDetayIdleri имеет другое имя, чем ваш вызов:

cmd = new SqlCommand("GetIslemIdleri", sqlConn);
...