项目抛异常:‘Date‘ 不是可以识别的 内置函数名称。 关键字 ‘AS‘ 附近有语法错误。

news2024/11/23 17:17:24

今天在解决公司C#项目bug问题,顺便记录一下问题及解决方案。入库日报表和出库日报表执行查询失败: ‘DATE’ 不是可以识别的 内置函数名称。

问题截图如下:

在这里插入图片描述这个错误信息看起来是由于在执行远程方法 SIE.WMS.Statistics.StatisticsController.GetDayOutStocks 时发生了异常。具体的错误信息是 “‘Date’ 不是可以识别的内置函数名称”,同时附近有语法错误,关键字 ‘AS’ 附近存在问题。

报错详细日志如下:

> Exception has been thrown by the target of an invocation.->远程方法
> SIE.WMS.Statistics.StatisticsController.GetDayOutStocks(DayOutStockViewModelCriteria)
> 执行失败:'Date' 不是可以识别的 内置函数名称。 关键字 'AS' 附近有语法错误。 SELECT [T1].[NAME] AS
> [Warehouse], DateName(year,dm.collect_date) YEAR,
> DateName(month,dm.collect_date) MONTH, [dm].[COLLECT_DATE] AS
> [OutStockDate], SUM([p].[SHIPPING_QTY]) AS [DeliverQty],
> MAX([dm].[ITEM_QTY]) AS [ItemQty], MAX([T2].[BILL_QTY]) AS [BillQty]
> FROM [SHIPPING_ORDER_DTL] AS [p] INNER JOIN [SHIPPING_ORDER] AS [T0]
> ON [p].[SHIPPING_ORDER_ID] = [T0].[ID] AND [T0].[INV_ORG_ID] = 1 AND
> [T0].[IS_PHANTOM] = False INNER JOIN [WH] AS [T1] ON
> [T0].[SHIPPING_WARE_HOUSE_ID] = [T1].[ID] AND [T1].[INV_ORG_ID] = 1
> AND [T1].[IS_PHANTOM] = False INNER JOIN (SELECT 0 id,
> [d1].[COLLECT_DATE] AS [Collect_Date], [d1].[WAREHOUSE_ID] AS
> [Warehouse_Id], COUNT([d1].[ITEM_ID]) AS [Item_Qty] FROM (SELECT
> DISTINCT d.shipping_date collect_date, [a].[SHIPPING_WARE_HOUSE_ID] AS
> [Warehouse_Id], [d].[ITEM_ID] AS [Item_Id] FROM [SHIPPING_ORDER_DTL]
> AS [d] INNER JOIN [SHIPPING_ORDER] AS [a] ON [d].[SHIPPING_ORDER_ID] =
> [a].[ID] AND [a].[INV_ORG_ID] = 1 AND [a].[IS_PHANTOM] = False WHERE
> [d].[ORDER_STATE] = 80 AND [d].[SHIPPING_QTY] > 0 AND [d].[INV_ORG_ID]
> = 1 AND [d].[IS_PHANTOM] = False) AS [d1] GROUP BY [d1].[COLLECT_DATE], [d1].[WAREHOUSE_ID]) AS [dm] ON
> [dm].[WAREHOUSE_ID] = [T0].[SHIPPING_WARE_HOUSE_ID] AND
> [dm].[COLLECT_DATE] = Date(p.shipping_date) INNER JOIN (SELECT 0 id,
> [d1].[COLLECT_DATE] AS [Collect_Date], [d1].[WAREHOUSE_ID] AS
> [Warehouse_Id], COUNT([d1].[SO_ID]) AS [Bill_Qty] FROM (SELECT
> DISTINCT d.shipping_date collect_date, [a].[SHIPPING_WARE_HOUSE_ID] AS
> [Warehouse_Id], [a].[ID] AS [So_Id] FROM [SHIPPING_ORDER_DTL] AS [d]
> INNER JOIN [SHIPPING_ORDER] AS [a] ON [d].[SHIPPING_ORDER_ID] =
> [a].[ID] AND [a].[INV_ORG_ID] = 1 AND [a].[IS_PHANTOM] = False WHERE
> [d].[ORDER_STATE] = 80 AND [d].[SHIPPING_QTY] > 0 AND [d].[INV_ORG_ID]
> = 1 AND [d].[IS_PHANTOM] = False) AS [d1] GROUP BY [d1].[COLLECT_DATE], [d1].[WAREHOUSE_ID]) AS [T2] ON
> [T2].[WAREHOUSE_ID] = [T0].[SHIPPING_WARE_HOUSE_ID] AND
> [T2].[COLLECT_DATE] = Date(p.shipping_date) WHERE [p].[ORDER_STATE] =
> 80 AND [p].[SHIPPING_QTY] > 0 AND [p].[SHIPPING_DATE] >=
> to_date('2023/12/10 0:00:00','yyyy-mm-dd hh24:mi:ss') AND
> [p].[SHIPPING_DATE] < to_date('2023/12/17 0:00:00','yyyy-mm-dd
> hh24:mi:ss') AND [p].[INV_ORG_ID] = 1 AND [p].[IS_PHANTOM] = False
> GROUP BY [T1].[NAME], [dm].[COLLECT_DATE];->'Date' 不是可以识别的 内置函数名称。 关键字
> 'AS' 附近有语法错误。 SELECT [T1].[NAME] AS [Warehouse],
> DateName(year,dm.collect_date) YEAR, DateName(month,dm.collect_date)
> MONTH, [dm].[COLLECT_DATE] AS [OutStockDate], SUM([p].[SHIPPING_QTY])
> AS [DeliverQty], MAX([dm].[ITEM_QTY]) AS [ItemQty],
> MAX([T2].[BILL_QTY]) AS [BillQty] FROM [SHIPPING_ORDER_DTL] AS [p]
> INNER JOIN [SHIPPING_ORDER] AS [T0] ON [p].[SHIPPING_ORDER_ID] =
> [T0].[ID] AND [T0].[INV_ORG_ID] = 1 AND [T0].[IS_PHANTOM] = False
> INNER JOIN [WH] AS [T1] ON [T0].[SHIPPING_WARE_HOUSE_ID] = [T1].[ID]
> AND [T1].[INV_ORG_ID] = 1 AND [T1].[IS_PHANTOM] = False INNER JOIN
> (SELECT 0 id, [d1].[COLLECT_DATE] AS [Collect_Date],
> [d1].[WAREHOUSE_ID] AS [Warehouse_Id], COUNT([d1].[ITEM_ID]) AS
> [Item_Qty] FROM (SELECT DISTINCT d.shipping_date collect_date,
> [a].[SHIPPING_WARE_HOUSE_ID] AS [Warehouse_Id], [d].[ITEM_ID] AS
> [Item_Id] FROM [SHIPPING_ORDER_DTL] AS [d] INNER JOIN [SHIPPING_ORDER]
> AS [a] ON [d].[SHIPPING_ORDER_ID] = [a].[ID] AND [a].[INV_ORG_ID] = 1
> AND [a].[IS_PHANTOM] = False WHERE [d].[ORDER_STATE] = 80 AND
> [d].[SHIPPING_QTY] > 0 AND [d].[INV_ORG_ID] = 1 AND [d].[IS_PHANTOM] =
> False) AS [d1] GROUP BY [d1].[COLLECT_DATE], [d1].[WAREHOUSE_ID]) AS
> [dm] ON [dm].[WAREHOUSE_ID] = [T0].[SHIPPING_WARE_HOUSE_ID] AND
> [dm].[COLLECT_DATE] = Date(p.shipping_date) INNER JOIN (SELECT 0 id,
> [d1].[COLLECT_DATE] AS [Collect_Date], [d1].[WAREHOUSE_ID] AS
> [Warehouse_Id], COUNT([d1].[SO_ID]) AS [Bill_Qty] FROM (SELECT
> DISTINCT d.shipping_date collect_date, [a].[SHIPPING_WARE_HOUSE_ID] AS
> [Warehouse_Id], [a].[ID] AS [So_Id] FROM [SHIPPING_ORDER_DTL] AS [d]
> INNER JOIN [SHIPPING_ORDER] AS [a] ON [d].[SHIPPING_ORDER_ID] =
> [a].[ID] AND [a].[INV_ORG_ID] = 1 AND [a].[IS_PHANTOM] = False WHERE
> [d].[ORDER_STATE] = 80 AND [d].[SHIPPING_QTY] > 0 AND [d].[INV_ORG_ID]
> = 1 AND [d].[IS_PHANTOM] = False) AS [d1] GROUP BY [d1].[COLLECT_DATE], [d1].[WAREHOUSE_ID]) AS [T2] ON
> [T2].[WAREHOUSE_ID] = [T0].[SHIPPING_WARE_HOUSE_ID] AND
> [T2].[COLLECT_DATE] = Date(p.shipping_date) WHERE [p].[ORDER_STATE] =
> 80 AND [p].[SHIPPING_QTY] > 0 AND [p].[SHIPPING_DATE] >=
> to_date('2023/12/10 0:00:00','yyyy-mm-dd hh24:mi:ss') AND
> [p].[SHIPPING_DATE] < to_date('2023/12/17 0:00:00','yyyy-mm-dd
> hh24:mi:ss') AND [p].[INV_ORG_ID] = 1 AND [p].[IS_PHANTOM] = False
> GROUP BY [T1].[NAME], [dm].[COLLECT_DATE];
后台debug调试直接抛异常

在这里插入图片描述
查看详细异常message
在这里插入图片描述同时去sqlserver执行sql,同样也是报错!
判断可能是自定义函数拼接错误!
在这里插入图片描述

初步分析: 可能是由于拼写错误、未声明函数或者不正确的使用导致的。接下来我们需要去后台检查代码中与 ‘Date’ 相关的部分代码,确保其正确性。

定位排查问题

后台断点调试
在这里插入图片描述在这里插入图片描述
在这里插入图片描述定位应该是这两行代码 导致错误。

 query.Join<Asn, DayInStockItemSum>("dm", (h, dm) => dm.WarehouseId == h.WarehouseId && dm.CollectDate == h.SQL<DateTime>("Date(p.collect_date)"));
 query.Join<Asn, DayInStockBillSum>((h, db) => db.WarehouseId == h.WarehouseId && db.CollectDate == h.SQL<DateTime>("Date(p.collect_date)"));

在这里插入图片描述
这是代码段使用自定义函数将 p.shipping_date 转换为日期类型的 SQL 查询。在这里,使用了 SQL(“Date(p.shipping_date)”) 来执行这个转换。

然而,这样的写法可能导致 SQL 注入的风险。如果 p.shipping_date 是用户输入的值,直接将其嵌入 SQL 语句可能会导致安全问题。

解决方案: 最好的做法是使用参数化查询,以避免潜在的安全漏洞。

下面是修改后的代码,使用参数化查询:

query.Join<Asn, DayInStockItemSum>("dm", (h, dm) => dm.WarehouseId == h.WarehouseId && dm.CollectDate == h.SQL<DateTime>("collect_date)"));
query.Join<Asn, DayInStockBillSum>((h, db) => db.WarehouseId == h.WarehouseId && db.CollectDate == h.SQL<DateTime>("collect_date"));

优化一下代码逻辑,添加一个判断(判断是否是SqlServer数据库服务器,添加这两行语句)
这里,我使用了 h.Param(“shipping_date”) 来表示参数化的日期。
在这里插入图片描述
最后,前端页面执行查询,问题解决ok!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 10如何关闭系统自动更新(实用教程)

本章教程&#xff0c;用最简洁的方式介绍在windows10中如何关闭系统自动更新。 目录 一、关闭自动更新服务 二、关闭自动更新组策略 一、关闭自动更新服务 1、 winr 2、services.msc 3、找到并双击 Windows Update 修改启动类型为禁用 二、关闭自动更新组策略 1、winr 2、gp…

【算法Hot100系列】最长回文子串

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

前端已死,网安当立。

随着人工智能和低代码的崛起&#xff0c;“前端已死”的声音逐渐兴起。前端已死&#xff1f;尊嘟假嘟&#xff1f;快来发表你的看法吧&#xff01; 此为内容创作模板&#xff0c;在发布之前请将不必要的内容删除 一、为什么会出现“前端已死”的言论 “前端已死”的言论通常…

结构体基础全家桶(1)创建与初始化

目录 结构体概念&#xff1a; 结构体类型&#xff1a; 结构体变量的创建&#xff1a; 定义结构体变量的三种方式&#xff1a; 结构体变量的引用&#xff1a; 结构体变量的初始化: 结构体数组&#xff1a; 结构体数组定义&#xff1a; 结构体数组初始化&#xff1a; 结…

MySQL中的时间函数整理汇总

1.获取当前时间 -- 获取当前时间 SELECT NOW(); -- 获取当前日期 SELECT CURDATE(); -- 获取当前时分秒 SELECT CURTIME(); 2.获取对应日期对应的年/月/日/月份名/星期数 -- 返回对应日期对应的年/月/日/月份名/星期数 select year(now())as 年,month(now())as 月,day(now())…

Java Wait Notify

概念 所有对象继承Object方法 用于同步资源锁控制等待以及唤醒 Demo&#xff1a; Message 类同步资源 Waiter 持有Msg&#xff0c;New两个线程Waiter等待 Notifier 持有Msg&#xff0c;通过Msg通知Waiter线程继续 实战 package com.example.demo.java.base.wait;/*** messa…

LeetCode-克服链表不能随机访问的问题

1.重排链表 题目描述&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0…

node 版本管理(windows/linux)

windows 下载 Releases coreybutler/nvm-windows GitHub 查看版本 nvm --version 查看已经安装的版本 nvm ls 安装指定版本 nvm install 5.8.0 卸载制定的版本 nvm uninstall 5.8.0 切换使用指定的版本 nvm use 14.21.3 linux 下载 https://github.com/nvm-sh/nvm/t…

Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能&#xff0c;涉及到配置模型权重以执行特定任务。这不仅是技术操作&#xff0c;更像是一种艺术&#xff0c;需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和…

IP代理如何影响网站的速度?代理ip服务器有哪些作用?

目录 前言 一、如何影响速度 二、代理服务器的作用 1. 隐藏真实IP地址 2. 绕过访问限制 3. 分布式访问 4. 数据缓存和加速 总结 前言 IP代理是一种通过在用户和目标网站之间引入代理服务器来访问目标网站的方式。代理服务器充当中间人&#xff0c;将用户的请求转发给目…

基于Hadoop的农产品价格信息检测分析系统

基于Hadoop的农产品价格信息检测分析系统 前言数据处理模块1. 数据爬取2. 数据清洗与处理3. 数据存储 数据分析与检测模块1. 农产品价格趋势分析2. 农产品价格检索3. 不同市场价格对比 创新点 前言 为了更好地了解农产品市场价格趋势和不同市场之间的价格差异&#xff0c;我设…

JavaOOP篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是B/S架构&#xff1f;什么是C/S架构二、Java都有那些开发平台&#xff1f;三、什么是JDK&#xff1f;什么是JRE?四、Java语言有哪些特点五、面向对象和面向过程的区别 前言 前些天发现了一个巨牛的人工智能学习网站&#xff…

科大讯飞(深圳)测开面试真题

一面&#xff08;测试组长面&#xff09; 1、上家公司项目以及团队的规模是怎么样的&#xff1f; 2、你负责的项目整体的流程是怎么样的&#xff1f; 3、自动化实施过程中&#xff0c;是如何和业务测试进行沟通的&#xff1f; 4、在上家公司你已经是专职做自动化了&#xf…

【C语言】——认识指针变量和地址,以及指针变量类型的意义

&#x1f3a5; 岁月失语唯石能言的个人主页 &#x1f525;个人栏专&#xff1a;秒懂C语言 ⭐若在许我少年时&#xff0c;一两黄金一两风 目录 前言 一、指针变量和地址 1.1 取地址操作符&#xff08;&&#xff09; 1.2 指针变量和解引用操作符&#xff…

Kuaipu-M6 整合管理平台系统 SQL注入漏洞复现

0x01 产品简介 Kuaipu-M6 整合管理平台系统是一款功能丰富、易于使用和高度灵活的企业级管理软件,为企业提供了一体化的管理解决方案,帮助企业实现优化运营和提高竞争力的目标。 0x02 漏洞概述 Kuaipu-M6 整合管理平台系统 SalaryAccounting.asmx接口处存在SQL注入漏洞,未…

YOLOv5改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)

一、本文介绍 本文给大家带来的改进机制是Slim-neck提出的Neck部分&#xff0c;Slim-neck是一种设计用于优化卷积神经网络中neck部分的结构。在我们YOLOv5中&#xff0c;neck是连接主干网络&#xff08;backbone&#xff09;和头部网络&#xff08;head&#xff09;的部分&…

springCloud项目打包如何把jar放到指定目录下

springCloud项目打包如何把jar发放到指定目录下 maven-antrun-plugin springCloud微服务打包jar&#xff0c;模块过多&#xff1b;我的项目模块结构如下&#xff1a; 我把实体类相关的单独抽离一个模块在service-api下服务单独写在service某块下&#xff0c; 每个模块的jar都…

模拟实验中经常遇到的问题和常用技巧

简介 最近在进行新文章的数值模拟阶段。上一次已经跟读者们分享了模拟实验的大致流程&#xff0c;见&#xff1a;数值模拟流程记录和分享 。 本文是在前提下&#xff0c;汇总了小编在模拟实验中经常遇到的问题和常用技巧。 文章目录 简介1. 隐藏输出结果自动创建文件夹保存多…

nginx_rtmp_module 之 ngx_rtmp_live_module模块

模块作用 直播模块代码 ngx_rtmp_live_module.c&#xff0c;主要作用是&#xff1a;当客户端推流或者拉流的时候&#xff0c;创建的rtmp session会加入到 live 模块的存储链表中。 模块配置命令 static ngx_command_t ngx_rtmp_live_commands[] {{ ngx_string("live&…

java SSM兼职平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM兼职平台系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和 数据库&#xff0c;系统主要采用B/…