我在Stored Procedure
的{{1}}连接中使用了Web Service
。当我手动执行我的存储过程时,我看到它返回了我需要的列,但是当我使用LINQ to SQL
尝试使用Web Service
时,我会抛出LINQ to SQL
错误。
以下是更多详情:
"String must be exactly one character long."
预计有四个Stored Procedure
:parameters
,char(12)
,varchar(3)
,int
当我这样做时:varchar(3) output
我得到了正确的列(在SQL Server 2012中),但是当我通过以下代码从我的Web服务中调用它时:
exec spName '123456789012', '123', '1', ''
它抛出了需要字符串恰好是一个字符长的错误。
所以,我接到我的问题:为什么exec会工作,但是具有相同参数的Web Service调用却没有,我该如何解决?
答案 0 :(得分:1)
在您的示例中,第三个参数在撇号中给出 - 就像它是varchar(而不是int)。在c#示例中,第三个参数有int类型。请查看您的存储过程定义和c#生成的类。也许第三个参数有类型混乱。 EXEC之所以有效,是因为SQL Server可以在INT和VARCHAR类型之间转换参数。
还使用SQL事件探查器来捕获SQL查询。我想LINQ用params而不是直接参数构建SQL查询。