【问题标题】:SQL stored procedure to pass date value in months/years以月/年为单位传递日期值的 SQL 存储过程
【发布时间】: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


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多