【发布时间】:2022-06-16 16:43:38
【问题描述】:
我正在开发一个 c#/wpf 应用程序并将其与 SQL 连接。
我正在尝试在 SQL 中编写一个存储过程,它采用选定的日期并将其转换为(月、年),因此在执行时,例如我将 1 表示为 1 月,将 2018 表示为当年,它将显示2018 年的总销售额(在这种情况下发生在任何给定月份,一月)
最终在 C# 中,用户将从组合框中选择任何给定月份,与年份相同,然后单击显示销售额,它应该使用存储过程显示。
到目前为止,我在 SQL 中有这个
ALTER PROCEDURE [dbo].[salesForSelectedMonth]
-- Add the parameters for the stored procedure here
@date date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT SUM (TotalPrice) AS TOTAL_SALES, YEAR([TruckRental-PB].RentDate) AS year, MONTH([TruckRental-PB].RentDate) AS month
FROM [TruckRental-PB]
WHERE MONTH(@date) = MONTH([TruckRental-PB].RentDate)
AND YEAR(@date) = YEAR([TruckRental-PB].RentDate)
GROUP BY [TruckRental-PB].RentDate;
END
问题是这仅允许输入日期然后显示总销售额
我想要的是从 c# 中获取月份(数据类型 int)、年份(int)传递给 SQL proc 以产生总销售额
这是我目前的逻辑(获取一个 datepicker 值并将其传递给上面的 proc)但仍然出现错误
public static int monthlySales (DateTime date)
{
using (Data_Context ctx = new Data_Context())
{
int sales = int.Parse(ctx.TruckRentalPbs.FromSqlRaw("salesForSelectedMonth", date).FirstOrDefault().ToString());
return sales;
}
System.InvalidOperationException: ''FromSqlRaw' 或 'FromSqlInterpolated' 是用不可组合的 SQL 和 查询组成它。考虑在 在客户端执行合成的方法。'
【问题讨论】:
-
您使用的是哪个 dbms? (看起来像 MS SQL Server 代码?)
标签: c# sql wpf store procedure