我试图计算运行存储过程后要更新的用户数和插入的用户数。
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();
}
有什么想法如何显示从存储过程到C#函数的计数器?我在函数中添加了内容,现在我没有在输出中得到任何数据...
答案 0 :(得分:1)
TBH是很久以前的,因为我弄乱了输出参数,但是您添加了输出参数,但从未检查过这些参数。您所需的值应在这些参数中。 我建议您尝试获取这些值,例如(在执行完之后):
var addedUserCount = (int)cmd.Parameters["@addedUser"].Value;
或类似的东西