【发布时间】:2018-08-25 05:49:46
【问题描述】:
我最近在 Azure 上为我的 Web 应用程序创建了一个存储过程。我使用 ASP.net core 2.0 来制作它。在存储过程中,我想获取特定的 PC 组件类型,例如:“主板”。之后我想将该类型返回给我的应用程序。
这是我的存储过程
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 中。但是当我运行它时,它会出现以下错误:
System.Data.SqlClient.SqlException: '将 nvarchar 值 'Memory' 转换为数据类型 int 时转换失败。'
我也尝试使用 DynamicParameters 但这只是给了我同样的错误。真正奇怪的是我的数据库中没有内存表或列。
【问题讨论】:
标签: c# sql tsql asp.net-core-2.0 dapper