我的場景是這樣的。我有一個需要更新的電話表(需要更改現有的客戶端)或刪除(如果他們希望刪除現有的電話號碼)或插入(在插入新的否時插入字段爲空)。 我已經有兩個存儲過程添加一個新的電話並更新現有的一個。其參數爲:如何創建一個函數來更新,刪除或動態插入代碼
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)"
所以我有電話(如陸線/移動),並用它們的ID沿傳真的一部分,如果它們已經在存在DB。
現在我需要創建一個函數,它接受參數並根據傳遞給它的參數決定使用哪個sp。 我完全迷失在這裏。任何關於如何去實現這個功能的幫助都將非常感謝。甚至鏈接到教程將有所幫助! 再次感謝!
P.S 嘗試該功能之前,我做了這樣的事情,但它並不一致
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();
}
和FormView控件的更新命令的SPS。
sp的已經創建好了,我需要使用它們......所以唯一的選擇就是通過一個函數去做! – debutante