Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Хранимая процедура Update и кол-во параметров


Автор: thomas 20.12.2007, 15:03
Приветствую всех.
Что-то к концу года "котелок" плохо "варит".  smile 
Имеется табличка 
Категория
категорияId PK
группаId FK
наименование

Ситуация: например надо изменить наименование категории (группаId по любому не меняется).
Так вот вопросец:
сколько параметров прописывать в хранимой процедуре? и сколько задавать в приложении?
Код

CREATE PROCEDURE usp_Catigorie_Update
    @catigorie INT,
    @groepId INT,
    @catigorieNaam NVARCHAR(30)
AS
UPDATE tblCatigorie
SET
        GroepId = @groepId, -- НУЖЕН ЛИ ЭТОТ ПАРАМЕТР? если он не меняется
    CatigorieNaam = @catigorieNaam
WHERE
    CatigorieId = @catigorieId
GO

Код

using (SqlConnection con = new SqlConnection(Common.connectionString))
                    {
                        string proc = "usp_Categorie_Update";
                        using (SqlCommand cmd = new SqlCommand(proc, con))
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@categorieId", categorie.CategorieId);
                            cmd.Parameters.AddWithValue("@groepId", categorie.GroepId);  // ПРОПИСЫВАТЬ этот параметр или нет? Он не изменяется.
                            cmd.Parameters.AddWithValue("@categorieNaam", categorie.CategorieNaam);
                            con.Open();
                            cmd.ExecuteNonQuery();
                        }
                    }


Заранее благодарю.

ЗЫ это надо определить сейчас, потом этот класс войдет в библиотеку, которая будет вызываться в  другом проекте. В дальнейшем что-то поменять будет проблематично.

Автор: mr.DUDA 20.12.2007, 15:30
groepId не нужен, ведь он не меняется. UPDATE может обновлять часть полей, не обязательно все.

Автор: thomas 20.12.2007, 15:36
mr.DUDA
В общем, если я правильно понял, что бы не "захламлять" код не изменяемые параметры не прописываем и не передаем.
Правильно?

Автор: mr.DUDA 20.12.2007, 15:39
thomas,
Если ID группы точно 100% никогда не будет изменяться, то да. Другое дело, если юзеру кода взбредёт в голову изменить группу, то придётся переколбашивать код (хранимую процедуру и C#).

Автор: thomas 20.12.2007, 15:43
mr.DUDA
Спасибо.   smile 
Развеял тяжкие сомненья.   smile 
Удачи во всем.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)