You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯SQL插入无报错但未写入数据,请求排查问题

问题排查与解决方案

核心问题:参数引用错误

你的SQL语句里,@FormattedDate被单引号包裹了,这会让SQL把它当成字符串字面量(即直接匹配字符串"@FormattedDate"),而不是解析为你传入的参数值,这是导致查询无结果的主要原因。

修复步骤

  1. 修正参数引用
    去掉@FormattedDate两侧的单引号,修改后的WHERE子句:

    WHERE V.PRODUCT_TYPE = 3 
      AND (DS.IdentificationNumber is Null) 
      AND (ORDER_DATE LIKE @FormattedDate OR (PurchaseDate BETWEEN @ExcelDate AND @ExcelDatePlusTimeSpan))
    
  2. 检查LIKE的使用逻辑

    • 如果formattedDate是带通配符的格式(比如'2024-05%'),直接用LIKE @FormattedDate没问题;
    • 如果是完整的日期字符串(比如'2024-05-20'),建议改用ORDER_DATE = @FormattedDate,或者在C#代码里给formattedDate加上%后缀。
  3. 验证日期范围的有效性
    确认PurchaseDate字段类型与@ExcelDate、@ExcelDatePlusTimeSpan一致(均为datetime),同时检查时间范围是否合理:比如excelDate是否小于excelDatePlusTimeSpan,数据库中是否存在符合该时间范围的记录。

  4. 调试验证
    可以在代码中打印参数实际值,或者把参数值代入SQL,直接在数据库客户端执行查询,看是否能返回结果。示例测试SQL:

    -- 替换成实际参数值测试
    SELECT Product_NR Product,  'Dars' AS MissingSystem
    From PRODUCTSALE PS 
    JOIN VARIATION V ON PS.VARIATION_CODE = V.VARIATION_CODE
    LEFT JOIN DarsSales DS 
    ON PS.PRODUCT_NR = DS.IdentificationNumber
    WHERE V.PRODUCT_TYPE = 3 
      AND (DS.IdentificationNumber is Null) 
      AND (ORDER_DATE LIKE '2024-05%' OR (PurchaseDate BETWEEN '2024-05-01 00:00:00' AND '2024-05-31 23:59:59'))
    

    若这条查询能返回结果,说明代码里的参数传递或引用仍有问题;若也没结果,说明查询条件本身筛选不到数据。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:50:35