问题描述:
我正在尝试在 .NET Core 应用程序中调用存储过程。出于测试目的,我发送的硬编码值与我在 SQL Server 查询编辑器中传递的值和数据类型相同。
以下是我在 SQL Server 查询编辑器中传递的值、存储过程名称及其数据类型的屏幕截图:
以下是 .NET 端的代码:
int targetID = 2069;
int problemId1 = 0;
int tradeId1 = 0;
SqlParameter param1 = new SqlParameter("@targetType", 28);
SqlParameter param2 = new SqlParameter("@targeID", targetID);
SqlParameter param3 = new SqlParameter("@startDateToUse", "2019");
SqlParameter param4 = new SqlParameter("@problemID", problemId1);
SqlParameter param5 = new SqlParameter("@tradeID", tradeId1);
tempspexec = DbContext.Database
.SqlQuery<StoredProcDataExecution>("exec GetWorkOrderChartDataAsync @targetType, @targeID, @startDateToUse, @problemID, @tradeID ", param1, param2, param3, param4, param5
).ToList();
注意:以下屏幕截图显示了 param3 数据类型和值以供参考。
解释:
如果我们将 int 传递给存储过程,“startDateToUse”需要一个字符串值,它会崩溃并在数据集中返回全零。我在我的 .NET 应用程序中传递字符串,但它仍然在我的数据集中返回全零。
以下是我在 SQLServer 查询编辑器中传递 int 值时看到的内容。
数据类型更改为 DateTime
谢谢您的支持。