辰凌风

"Forget What Made Them Successful " Trap

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

调用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);

posted on 2010-10-21 11:28  辰凌风  阅读(561)  评论(0编辑  收藏  举报
忒客淘-我的站