首页 > 代码库 > C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

 

C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度。不然获取到的结果总是只有第一字符。本人就是由于这个原因,折腾了很久。在此记录一下,供大家以后参考!

例如:

CREATE PROCEDURE sp_AccountRole_Create@CategoryID int,@RoleName nvarchar(10),@Description nvarchar(50),@RoleID int outputASDECLARE @Count int-- 查找是否有相同名称的记录SELECT @Count = Count(RoleID) FROM Account_Role WHERERoleName = @RoleNameIF @Count = 0INSERT INTO Account_Role (CategoryID, RoleName, Description) valueS(@CategoryID, @RoleName, @Description)SET @RoleID = @@IDENTITYRETURN 1GO

 

SqlConnection DbConnection = new SqlConnection(mConnectionString);SqlCommand command = new SqlCommand( "sp_AccountRole_Create", DbConnection );DbConnection.Open(connectString);// 废置SqlCommand的属性为存储过程command.CommandType = CommandType.StoredProcedure;command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);command.Parameters.Add("@RoleID", SqlDbType.Int, 4);// 返回值command.Parameters.Add("Returnvalue",SqlDbType.Int,4, // SizeParameterDirection.Returnvalue,false, // is nullable 0, // byte precision0, // byte scalestring.Empty,DataRowVersion.Default,null );command.parameters["@CategoryID"].value = permission.CategoryID;command.parameters["@RoleName"].value = permission.PermissionName;command.parameters["@Description"].value = permission.Description;// 可以返回新的ID值command.parameters["@RoleID"].Direction = ParameterDirection.Output;int rowsAffected = command.ExecuteNonQuery();int result = command.parameters["Returnvalue"].value;int newID = command.parameters["@RoleID"].value;

 

 

 

C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息