解析判定数据有效性表达式的存储过程 for SQLServer

简介:

INSQL的实时数据有效性判定规则;需要一个比较灵活的定义,我采用了SQL的标准表达式用字符串方式定义到规则内,通过存储过程解析输出断定结果。具体的代码请看下面的内容;


-- =============================================
--
Author: SUIFEI
--
Create date: 2008-8-5
--
Description: 判定规则
--
=============================================
ALTER PROCEDURE [dbo].[MP_JC_DATAISVALID]
@EXPS varchar(4096),--表达式
@RESULT int = null OUT--传出参数:1表示有效,0表示无效
AS
BEGIN
/*
调用演示:
表达式:[YT601_PLAN_YP] BETWEEN 6500 AND 7000, [WQ4_EXPORT_TEMP]>=30
解释:YT601_PLAN_YP 的tag点的数据必须小于或等于 6500 和7000之间,并且WQ4_EXPORT_TEMP点的数据大于或等于20

DECLARE @RESULT INT
EXEC MP_JC_DATAISVALID '[YT601_PLAN_YP] BETWEEN 6500 AND 7000, [WQ4_EXPORT_TEMP]>=30',@RESULT OUT
SELECT @RESULT
*/
/*
定义的数据结构: tag名,参数代码,表达式(采用标准sql表达式)
TAGNAME , PARAMETERCODE , EXPRESSION
A1 1001 NULL
A2 1001 [A1]>100,[A2] BETWEEN 98 AND 102
A3 1001 NULL
*/
SET NOCOUNT ON
--开启本句直接调试: SET @EXPS = '[YT601_PLAN_YP] BETWEEN 6500 AND 7000, [WQ4_EXPORT_TEMP]>=30'
DECLARE @EXP VARCHAR(2048)
DECLARE @R INT
DECLARE @EXPSQL VARCHAR(4096)

SET @R = 0
SET @EXPS = LTRIM(RTRIM(@EXPS))
SET @EXPSQL = ''

IF ( RIGHT(RTRIM(@EXPS),1)<>',') SET @EXPS = @EXPS + ','

select '['+TAGNAME+']' AS TAGNAME,VALUE INTO #tmp FROM LIVE --LIVE表是实时数据表
UPDATE #TMP SET @EXPS =REPLACE(@EXPS, TAGNAME, VALUE)
WHERE CHARINDEX(TAGNAME, @EXPS)<>0
DROP TABLE #TMP

CREATE TABLE #EXPRESSION ( RESULT INT )

WHILE( CHARINDEX(',',@EXPS)<>0 )
BEGIN
SET @EXP = SUBSTRING(@EXPS,1,CHARINDEX(',',@EXPS) -1)
SET @EXPS = SUBSTRING(@EXPS,CHARINDEX(',',@EXPS) +1,LEN(@EXPS))

SET @EXPSQL = 'INSERT INTO #EXPRESSION '+
'SELECT (CASE WHEN (' +
@EXP +
') THEN 1 ELSE 0 END) '
EXEC(@EXPSQL)
PRINT @EXPSQL
END
SELECT @RESULT = MIN(RESULT) FROM #EXPRESSION
DROP TABLE #EXPRESSION
PRINT @RESULT
RETURN @RESULT;
END



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2008/09/08/1286768.html,如需转载请自行联系原作者
相关文章
|
12月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
818 11
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
796 4
JSON数据解析实战:从嵌套结构到结构化表格
|
存储 搜索推荐 大数据
数据大爆炸:解析大数据的起源及其对未来的启示
数据大爆炸:解析大数据的起源及其对未来的启示
865 15
数据大爆炸:解析大数据的起源及其对未来的启示
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
1965 9
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
807 9
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
SQL 容灾 关系型数据库
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
892 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
689 4
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。

推荐镜像

更多
  • DNS