Я работаю со старым инструментом и базой данных, которая была давно связана с этим инструментом. Я новичок в этом и нуждаюсь в помощи, понимающей это. Мне нужна помощь в написании кода, который я пытался и исправлял каждый раз.Проблема с сохраненной процедурой
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)? Разумеется, ваши имена входа менее 8000 символов. –
Но мне любопытно. Почему вы пытаетесь исправить какой-либо код, когда нет базы данных? Вы пытаетесь перестроить базу данных из кода приложения? Похоже, что вряд ли это будет практически невозможно. И серьезно хранить полное имя в нескольких таблицах просто ужасно. Он должен быть нормирован на одну точку входа. –