私は古いツールとこのツールに接続していたデータベースをずっと使っていません。私はこれで新しく、これを理解する助けが必要です。私は毎回試してエラーを出したコードを書くのに助けが必要です。ストアドプロシージャの更新に関する問題
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」で共通に持っている唯一のものを持っています。私は、エージェントが合法的にこれまでのところ、私はいくつかのいずれかが、私が間違っているのを教えてくださいすることができ、この手順
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
が出ている
が名前を変更した場合、「AN」を更新する必要があります。ありがとうございます
'SET AN = @ AN WHERE AN = @ AN'です。これは何もしていない。同じ値に設定しています。 – Eric
本当にvarchar(max)が必要ですか?確かにあなたのログオン名は8,000文字未満です。 –
しかし、私は好奇心が強いです。データベースがないときに何らかのコードを修正しようとしているのはなぜですか?アプリケーションコードからデータベースをリバースエンジニアリングしようとしていますか?それは、それを正しくすることはほぼ不可能である可能性が高いようです。そして真剣に複数のテーブルに完全な名前を格納するのはひどいです。これは、単一の入力点に対して正規化されるべきである。 –