使用c#开发程序访问SQLServer存储过程,输出的参数(output)存在问题:
ALTER PROCEDURE [dbo].[proc_login]
@UserAccount varchar(32), --账户
@LoginPwd varchar(32), --密码
@ret int output,
@stroutput nvarchar(200) output
此存储过程在执行完后 @ret赋int型的值程序都可以正确获得,
但是 @stroutput 不管赋什么值,最终程序里获得的值都是字符串的第一位,如“登录成功”---->“登”
System.Data.SqlClient.SqlParameter prm1 = new System.Data.SqlClient.SqlParameter();
prm1.ParameterName = "@stroutput";//参数名称
prm1.SqlDbType = SqlDbType.VarChar;//参数类型
prm1.Size = 200;//参数的大小
prm1.Direction = ParameterDirection.InputOutput;//参数的方向,输入还是输出
cmd.Parameters.Add(prm1);
通过多次测试发现:如果是输出参数类型为字符串类型的,不管是varchar 还是 nvarcahr 还是Char 打开数据库监控发现,参数长度最终都被改成了1。 所以最终程序里获得的都是第一个字符!
请教各位大神,此问题怎么破解?