Возвращаемое значение из процедуры сохранения в функцию C# - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь подсчитать, сколько пользователей обновлено и сколько пользователей вставлено после того, как я запустил процедуру хранения.

CREATE PROCEDURE [dbo].[ADProcTemp]
    @Username varchar(250),
    @DisplayName varchar(70),
    @isEnabled tinyint,
    @PassNevExp tinyint,
    @addedUser int OUTPUT,
    @updatedUser int OUTPUT
AS  
BEGIN   
    SET @addedUser = 0
    SET @updatedUser = 0
    IF NOT EXISTS (SELECT TOP 1 PrezimeIme FROM [dbo].[tblZaposleni_AD] WITH (NOLOCK) 
                   WHERE NetworkLogin = @Username)
    BEGIN
        IF(@isEnabled = 1 OR @PassNevExp = 1)
             INSERT INTO [dbo].[tblZaposleni_AD](NetworkLogin, PrezimeIme, Status, PassNevExp)
             VALUES (@Username, @DisplayName, @isEnabled, @PassNevExp)
        SET @addedUser = @addedUser + @@ROWCOUNT;   
        SELECT @addedUser As UkupnoDodanihKorisnika
    END
    ELSE
    BEGIN
        UPDATE [dbo].[tblZaposleni_AD]
        SET Status = @isEnabled,        
            PassNevExp = @PassNevExp
        WHERE NetworkLogin = @Username 
          AND (Status <> @isEnabled) OR (PassNevExp <>@PassNevExp)  
          SET  @updatedUser =  @updatedUser + @@ROWCOUNT; 
          SELECT @updatedUser As UkupnoIzmjenjenihKorisnika
    END  
END

Вот моя процедура хранения, и сейчас я хочу в моем C# отображении кода переменную @addedUser и @updatedUser из процедуры сохранения. Пока я создаю

public void ExcStrPrc(string Username, string DisplayName, bool isEnable, bool PassNevExp)
{

    SqlConnection conn = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=DesignSaoOsig1;Integrated Security=True");
    SqlCommand cmd = new SqlCommand("ADProcTemp", conn);
    cmd.CommandType = CommandType.StoredProcedure;



    cmd.Parameters.AddWithValue("@Username", Username.ToString().Trim());
    cmd.Parameters.AddWithValue("@DisplayName", DisplayName.ToString().Trim());
    cmd.Parameters.AddWithValue("@isEnabled", Convert.ToInt32(isEnable));
    cmd.Parameters.AddWithValue("@PassNevExp", Convert.ToInt32(PassNevExp));

    cmd.Parameters.Add("@addedUser", SqlDbType.Int).Direction = ParameterDirection.Output;
    cmd.Parameters.Add("@updatedUser", SqlDbType.Int).Direction = ParameterDirection.Output;

    conn.Open();
    int k = cmd.ExecuteNonQuery();           
    if (k != 0)
    {
        Console.WriteLine("Uspjesno izvrseno !");
    }
    Console.WriteLine("Ukupno novih korisnika {0}");
    conn.Close();
}

Есть идеи, как отобразить счетчик из StoreProcedure для функции C#? Я добавил в свою функцию и прямо сейчас я не получил никаких данных в выводе?

1 Ответ

1 голос
/ 04 мая 2020

TBH долгое время было go, так как я возился с выходными параметрами, но вы добавляете выходные параметры, но никогда не проверяете их. Требуемые значения должны быть в этих параметрах. Я предлагаю вам попытаться получить эти значения, например (после выполнения курса):

var addedUserCount = (int)cmd.Parameters["@addedUser"].Value;

или что-то подобное

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...