C# 执行IDbConnection.Query时出现异常:转换nvarchar值时转换失败';内存到数据类型int';
我最近在Azure上为我的Web应用程序创建了一个存储过程。我使用ASP.NETCore2.0来制作它。在存储过程中,我想得到一个特定的PC组件类型,例如:“主板”。之后,我想将该类型返回到我的应用程序中 这是我的存储过程C# 执行IDbConnection.Query时出现异常:转换nvarchar值时转换失败';内存到数据类型int';,c#,sql,tsql,asp.net-core-2.0,dapper,C#,Sql,Tsql,Asp.net Core 2.0,Dapper,我最近在Azure上为我的Web应用程序创建了一个存储过程。我使用ASP.NETCore2.0来制作它。在存储过程中,我想得到一个特定的PC组件类型,例如:“主板”。之后,我想将该类型返回到我的应用程序中 这是我的存储过程 CREATE PROCEDURE GetCurrentType @BuildID INT = 1, @t NVARCHAR(128) OUTPUT, @Index INT OUTPUT AS BEGIN SET NOCOUNT ON; SELECT @I
CREATE PROCEDURE GetCurrentType
@BuildID INT = 1,
@t NVARCHAR(128) OUTPUT,
@Index INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Index = COUNT(*)
FROM Partslist
WHERE buildId = @BuildID;
SELECT @t = _Type
FROM ComponentTypes
WHERE PriorityID = @Index;
RETURN @t
END
存储过程统计用户拾取的所有已选定零件。根据该数字,它将在ComponentTypes表中查找下一个类型,供用户选择。将返回此类型。BuildID现在需要为1,但稍后我会将其更改为实际参数
C#代码:
IEnumerable<string> test = db.Query<string>
(
"GetCurrentType",
new {BuildID = 1, t = "", Index = 0},
commandType: CommandType.StoredProcedure
);
IEnumerable test=db.Query
(
“GetCurrentType”,
新的{BuildID=1,t=”“,Index=0},
commandType:commandType.StoredProcess
);
这应该获取类型并在测试IEnumerable中设置它。但当我运行它时,它会出现以下错误:
System.Data.SqlClient.SqlException:“将nvarchar值“Memory”转换为数据类型int时,转换失败。”
我还尝试使用DynamicParameters,但这只是给了我同样的错误。真正奇怪的是,我的数据库中没有内存表或内存列
@t NVARCHAR(128) OUTPUT,
及
返回值始终是数字;发件人:
语法
返回[整数表达式]
论据
整数表达式
是返回的整数值。存储过程可以向调用过程或应用程序返回整数值
返回类型
可选返回int
基本上:不要返回这个。选择它,或使用输出
参数
我的建议是SELECT
你能举个例子说明我应该如何使用输出参数吗?@sporterddo使用SELECT@t
会容易得多,这是唯一匹配Query
(Query
始终映射到SELECT
)
RETURN @t