我正在使用一箇舊的工具和連接到這個工具的數據庫在很久以前。我是新手,需要一些幫助來理解這一點。我需要幫助編寫我嘗試過的代碼,並且每次都出錯。存儲過程更新問題
public void UpdateUser(string NewUser, string OldUser)
{
using (SqlConnection con = HSDatabaseConnection())
{
using (SqlCommand cmd = new SqlCommand("UpdateNames", con))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@LogonName", System.Data.SqlDbType.VarChar).Value = NewUser;
cmd.Parameters.Add("@OldLogonName", System.Data.SqlDbType.VarChar).Value = OldUser;
cmd.ExecuteNonQuery();
}
con.Close();
}
}
我有4個表,每個表的唯一共同點就是列名「AN」。我需要更新「AN」如果代理人有改變名稱合法
到目前爲止,我想出了這個過程
USE [HSDB]
GO
/****** Object: StoredProcedure [dbo].[UpdateNames] Script Date: 9/16/2016 12:32:33 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UpdateNames]
--Add the parameters for the stored procedure here
@AN varchar(MAX)
AS
BEGIN
--SET NOCOUNT ON added to prevent extra result sets from
--interfering with SELECT statements.
SET NOCOUNT ON;
--Insert statements for procedure here
UPDATE Att
SET AN = @AN
WHERE (AN = @AN)
UPDATE MS
SET AN = @AN
WHERE (AN = @AN)
UPDATE Lost
SET AN = @AN
WHERE (AN = @AN)
UPDATE WeeklyCharges
SET AN = @AN
WHERE (AN = @AN)
END
有人能告訴我什麼,我做錯了。謝謝
'SET AN = @AN WHERE AN = @ AN'。這是無所事事。您將其設置爲相同的值。 – Eric
你真的需要varchar(max)嗎?當然你的登錄名字少於8,000個字符。 –
但我很好奇。爲什麼你在沒有數據庫時試圖修復一些代碼?您是否試圖從應用程序代碼中反向設計數據庫?這似乎很有可能幾乎不可能做到。嚴格地將全名存儲在多個表中是非常糟糕的。它應該被標準化爲一個單一的入口點。 –