Мой сценарий такой.У меня есть телефонный стол, который необходимо обновить (если ему нужно изменить существующий для клиента) или удалить (если он хочет удалить существующий номер) или вставить (если поле пусто, но новое не вставлено).У меня уже есть две хранимые процедуры, которые добавляют новый телефон и обновляет существующий.параметры которого:
EXECUTE @RC = [CUSTOMER_test].[dbo].[uspAddClientTel]
@ClientID
,@TelNo
,@TelTypeID
,@DetailsTypeID
,@SortNo
,@ResultTelID OUTPUT
EXECUTE @RC = [CUSTOMER_test].[dbo].[uspUpdateClientTel]
@TelID
,@TelNo
,@TelTypeID
,@DetailsTypeID
,@SortNo
,@ResultTelID OUTPUT
GO
часть запроса в представлении формы
(SELECT TOP 1 F.tel_no FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no ) AS fax,
(SELECT TOP 1 T.tel_no from TELEPHONE as T where T.tel_type_id = 1 OR T.tel_type_id = 2 AND T.client_id = @id ORDER BY sort_no) AS telephone,
(SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no ) AS faxid ,
(SELECT TOP 1 T.tel_id from TELEPHONE as T where T.tel_type_id = 1 OR T.tel_type_id = 2 AND T.client_id = @id ORDER BY sort_no) AS telephoneid ,
CLIENT_ADDRESS.client_address_id
FROM ORGANIZATION AS O INNER JOIN CLIENT ON O.client_id = CLIENT.client_id
LEFT OUTER JOIN CLIENT_ADDRESS ON CLIENT.client_id = CLIENT_ADDRESS.client_id
WHERE (CLIENT.client_id = @id)"
, поэтому у меня есть телефон (как стационарный / мобильный) и факс вместе с их идентификаторами, еслиони уже существуют в БД.
Теперь мне нужно создать функцию, которая принимает аргументы и тем самым решает, какой sp использовать в зависимости от переданных ей аргументов.Я полностью потерян здесь.Любая помощь о том, как выполнить эту функцию, будет высоко ценится.даже ссылки на учебники помогут!Еще раз спасибо!
ps, прежде чем пытаться использовать функцию, я сделал что-то подобное, но это не соответствует
protected void FrmClient_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
string TelTypeID;
string ResultTelID1 = "";
int intClientID = (int)e.Keys[0];
string strTelID = (string)e.OldValues["telephoneid"];
string strFaxID = (string)e.OldValues["faxid"];
SqlConnection conTel = new SqlConnection();
conTel.ConnectionString = Convert.ToString(ConfigurationManager.ConnectionStrings["CUSTOMERConnectionString"]);
conTel.Open();
if (strTelID != "")
{
string strtelcmd = ("SELECT tel_type_id, details_type_id, sort_no from TELEPHONE where tel_id =" + strTelID);
SqlCommand telcmd = new SqlCommand(strtelcmd, conTel);
SqlDataReader rdrTel = telcmd.ExecuteReader();
while (rdrTel.Read())
{
sdsClient.UpdateParameters["TelTypeID"].DefaultValue = rdrTel["tel_type_id"].ToString();
sdsClient.UpdateParameters["DetailsTypeID"].DefaultValue = rdrTel["details_type_id"].ToString();
sdsClient.UpdateParameters["SortNo"].DefaultValue = rdrTel["sort_no"].ToString();
}
rdrTel.Close();
}
else if (strFaxID != "")
{
string strfaxcmd = ("SELECT tel_type_id, details_type_id, sort_no from TELEPHONE where tel_id ="+ strFaxID);
SqlCommand faxcmd = new SqlCommand(strfaxcmd, conTel);
SqlDataReader rdrfax = faxcmd.ExecuteReader();
while (rdrfax.Read())
{
sdsClient.UpdateParameters["TelTypeID1"].DefaultValue = rdrfax["tel_type_id"].ToString();
sdsClient.UpdateParameters["DetailsTypeID1"].DefaultValue = rdrfax["details_type_id"].ToString();
sdsClient.UpdateParameters["SortNo1"].DefaultValue = rdrfax["sort_no"].ToString();
}
rdrfax.Close();
}
else if (strTelID == "")
{
SqlCommand cmdaddTel = new SqlCommand("uspAddClientTel",conTel);
cmdaddTel.CommandType = CommandType.StoredProcedure;
string strNewTel = (string)e.NewValues["telephone"];
if (strNewTel.Trim().StartsWith("06") || strNewTel.Trim().StartsWith("07") )
TelTypeID = "2";
else
TelTypeID = "1";
cmdaddTel.Parameters.Add(new SqlParameter("@ClientID", intClientID));
cmdaddTel.Parameters.Add(new SqlParameter("@TelNo",strNewTel ));
cmdaddTel.Parameters.Add(new SqlParameter("@TelTypeID", TelTypeID));
cmdaddTel.Parameters.Add(new SqlParameter("@DetailsTypeID", 1));
cmdaddTel.Parameters.Add(new SqlParameter("@SortNo1", 1 ));
cmdaddTel.Parameters.Add(new SqlParameter("@ResultTelID1", ResultTelID1));
SqlDataReader rdrAddFax = cmdaddTel.ExecuteReader();
}
else if (strFaxID == "")
{
SqlCommand cmdaddFax = new SqlCommand("uspAddClientTel", conTel);
cmdaddFax.CommandType = CommandType.StoredProcedure;
string strNewFax = (string)e.NewValues["fax"];
cmdaddFax.Parameters.Add(new SqlParameter("@ClientID", intClientID));
cmdaddFax.Parameters.Add(new SqlParameter("@TelNo", strNewFax));
cmdaddFax.Parameters.Add(new SqlParameter("@TelTypeID", 3));
cmdaddFax.Parameters.Add(new SqlParameter("@DetailsTypeID", 2));
cmdaddFax.Parameters.Add(new SqlParameter("@SortNo1", 1));
cmdaddFax.Parameters.Add(new SqlParameter("@ResultTelID1", ResultTelID1));
SqlDataReader rdrAddFax = cmdaddFax.ExecuteReader();
}
conTel.Close();
}
и sps в команде update формы вида.