65

我在一个社交网络上工作,我的一个程序返回一个 VARCHAR 输出。所以这就是我写的:

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar);
job1.Direction = ParameterDirection.Output;

但是出现了这个错误:

String[1]:Size 属性的大小为 0 无效。

4

3 回答 3

113

指定参数时需要定义一个长度:varchar

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar, 50);

您应该使用与 SQL Server 存储过程中定义的长度相同的长度。

顺便说一句:如果您的存储过程也没有定义长度(类似于@job VARCHAR OUTPUT) - 那么您定义了一个varchar长度为 1 个字符的字符串......

于 2011-12-25T11:09:17.530 回答
7

是的,必须定义varchar/nvarchar数据类型的长度,如下所示。

cmd.Parameters.Add("@Description", SqlDbType.VarChar, 150).Direction =
    ParameterDirection.Output;
于 2017-02-23T12:13:52.683 回答
3

如果您使用的是 Dapper,则您已为参数传递了一个空值,其中预期的输入是一个字符串。

要查找有问题的值及其参数,请在调试会话期间检查 Dapper DynamicParameters 对象并打开索引引用的参数。

在此处输入图像描述

于 2020-11-26T23:52:47.417 回答