执行 IDbConnection.Query 出现异常:转换 nvarchar 值 'Memory to data type int' 时转换失败
Executing IDbConnection.Query gives exception: Conversion failed when converting the nvarchar value 'Memory to data type int'
我最近在 Azure 上为我的网络应用程序创建了一个存储过程。我用ASP.net core 2.0来制作。在存储过程中,我想获取特定的 PC 组件类型,例如:"Motherboard"。之后,我想 return 将该类型添加到我的应用程序中。
这是我的存储过程
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
存储过程计算用户已选择的所有已选择部分。它使用该编号在 table ComponentTypes 中寻找下一个类型供用户选择。这种类型将被 returned。 BuildID暂时需要为1,但稍后我会将其更改为实际参数。
C#代码:
IEnumerable<string> test = db.Query<string>
(
"GetCurrentType",
new {BuildID = 1, t = "", Index = 0},
commandType: CommandType.StoredProcedure
);
这应该获取类型并将其设置在测试 IEnumerable 中。但是当我 运行 它得到以下错误:
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value 'Memory' to data type int.'
我也尝试过使用 DynamicParameters,但这给了我同样的错误。真正奇怪的是我的数据库中没有内存 table 或列。
@t NVARCHAR(128) OUTPUT,
和
RETURN @t
RETURN
值始终为数字;来自 RETURN
:
Syntax
RETURN [ integer_expression ]
Arguments
integer_expression
Is the integer value that is returned. Stored procedures can return an integer value to a calling procedure or an application.
Return Types
Optionally returns int.
基本上:不要 RETURN
这个。 SELECT
它,或使用 OUTPUT
参数。
我的建议是 SELECT
。
我最近在 Azure 上为我的网络应用程序创建了一个存储过程。我用ASP.net core 2.0来制作。在存储过程中,我想获取特定的 PC 组件类型,例如:"Motherboard"。之后,我想 return 将该类型添加到我的应用程序中。
这是我的存储过程
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
存储过程计算用户已选择的所有已选择部分。它使用该编号在 table ComponentTypes 中寻找下一个类型供用户选择。这种类型将被 returned。 BuildID暂时需要为1,但稍后我会将其更改为实际参数。
C#代码:
IEnumerable<string> test = db.Query<string>
(
"GetCurrentType",
new {BuildID = 1, t = "", Index = 0},
commandType: CommandType.StoredProcedure
);
这应该获取类型并将其设置在测试 IEnumerable 中。但是当我 运行 它得到以下错误:
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value 'Memory' to data type int.'
我也尝试过使用 DynamicParameters,但这给了我同样的错误。真正奇怪的是我的数据库中没有内存 table 或列。
@t NVARCHAR(128) OUTPUT,
和
RETURN @t
RETURN
值始终为数字;来自 RETURN
:
Syntax
RETURN [ integer_expression ]
Arguments
integer_expression
Is the integer value that is returned. Stored procedures can return an integer value to a calling procedure or an application.
Return Types
Optionally returns int.
基本上:不要 RETURN
这个。 SELECT
它,或使用 OUTPUT
参数。
我的建议是 SELECT
。