调用C#程序中存储过程时,抛出异常 String[1]: the Size property has an invalid size of 0.
很郁闷,在Sql Manage studio中执行存储过程时,发现了一个问题:
代码
DECLARE @return_value int,
@MeterAddress nvarchar(50)
EXEC @return_value = [dbo].[upGetMeterAddressBySupplierCode]
@SupplierCode = N'0000000001',
@MeterAddress = @MeterAddress OUTPUT
SELECT @MeterAddress as N'@MeterAddress'
它的返回值是有长度的,而在存储过程的定义中之使用了SqlDbType.NVarChar,并没有设置长度。所以导致报错;
案例:
出现该问题的存储过程有一个特征,就是存在 Varchar 或者 Nvarchar 类型的 out 参数
调用时对该参数的定义类似于
SqlParameter para = new SqlParameter("@paraname", SqlDbType.NVarChar);
解决办法:
该out参数必须有一个指定的长度,因此,应进行类似下面的初始化:
SqlParameter para = new SqlParameter("@paraname", SqlDbType.NVarChar, size);