文章 姚 鑫 · 一月 4, 2022 阅读大约需 6 分钟 第十四章 SQL窗口函数概述(一) 第十四章 SQL窗口函数概述(一) 指定用于计算聚合和排名的每行“窗口框架”的函数。 窗口函数和聚合函数 在应用WHERE、GROUP by和HAVING子句之后,窗口函数对SELECT查询选择的行进行操作。 窗口函数将一组行中的一个(或多个)字段的值组合在一起,并在结果集中为生成的列中的每一行返回一个值。 虽然窗口函数与聚合函数类似,因为它们将多行结果组合在一起,但它们与聚合函数的不同之处在于,它们本身并不组合行。 窗函数的语法 窗口函数被指定为SELECT查询中的选择项。 窗口函数也可以在SELECT查询的ORDER BY子句中指定。 窗口函数执行与由PARTITION by子句、ORDER by子句和ROWS子句指定的逐行窗口相关的任务,并为每一行返回一个值。 这三个子句都是可选的,但是如果指定了,必须按照以下语法中的顺序指定: #SQL #Caché 0 0 0 1.2K
文章 he hf · 四月 24, 2023 阅读大约需 2 分钟 SqlDbx连接IRIS攻略new SqlDbx是我们常用的数据库查询与操作工具,因其轻量且无须安装而无处不在,然而习惯了在Intersystems的CACHE和ENSEMBLE版本下使用SqlDbx在升级到IRIS版本后却无法使用了,为此进行了一系列尝试,并最终获得成功,形成本文攻略,分享给大家。 1、在SqlDbx的连接登录窗口,从DBMS Type中直接选择 “InterSystems CACHE”连接IRIS会报错,提示“通过IRISconnect失败”,说明“InterSystems CACHE”不再适用于IRIS。 #ODBC #SQL #数据库 #InterSystems IRIS 2 2 0 1.1K
文章 he hf · 十月 8, 2022 阅读大约需 6 分钟 10分钟快速开发一个连接到InterSystems IRIS数据库的C#应用 安装InterSystems IRIS数据库的ODBC驱动,在Windows系统中配置数据源后,可以使用Microsoft Visual Studio 开发工具 中的服务器资源管理器很方便地连接到InterSystems IRIS数据库服务器,利用数据库连接的可视化视图,可以非常方便快捷地进行连接到InterSystems IRIS数据库的应用开发。本文将展示一个利用以上方式实现的例子,开发工具为Microsoft Visual Studio 2019,开发语言为C#,10分钟快速开发实现一个连接到InterSystems IRIS数据库的C#应用,在本例子中,可以通过选择日期和科室,查询指定日期和科室的就诊日志。 1、在成功安装InterSystems IRIS数据库的ODBC驱动后,从Windows的“控制面板”中选择“管理工具”,在“管理工具”中选择“ODBC数据源”。 #.NET #ODBC #SQL #开发环境 #数据库 #Caché #InterSystems IRIS 16 6 3 965
文章 姚 鑫 · 九月 19, 2021 阅读大约需 6 分钟 第二十章 SQL命令 CREATE TABLE AS SELECT 第二十章 SQL命令 CREATE TABLE AS SELECT 将现有表中的列定义和列数据复制到新表中。 #SQL #Caché 0 0 0 1K
文章 Qiao Peng · 一月 24, 2021 阅读大约需 3 分钟 解决SQL适配器连接到字符集为US7ASCII的Oracle数据库的中文乱码问题 在使用xDBC连接到字符集为US7ASCII的Oracle数据库时,大家可能遇到过中文的乱码问题,尤其是使用Oracle自己的xDBC驱动的时候。 字符集为US7ASCII的Oracle数据库虽然可以保存中文数据,但给客户端带来了很多麻烦,需要对获取和提交的数据进行转码。 在Ensemble/Health Connect/InterSystems IRIS 中使用SQL适配器连接到这样的Oracle数据库时,可以使用$ZCVT函数进行转码。 1. $ZCVT函数 $ZCVT函数是广泛使用的字符串转换函数,可以做大小写转换、编码转换、URL 和 URI 转换等。我们用其编码转换能力来解决字符集转码问题。 2. 获取的SQL结果集数据有中文时 #ODBC #SQL #互操作性 #Ensemble #HealthShare #InterSystems IRIS for Health 6 2 0 770
文章 聆严 周 · 九月 27, 2022 阅读大约需 6 分钟 Cache / IRIS 操作数据的3种基本方式 背景 Cache起源于没有SQL的1970时代,当时各种高级计算机语言才刚刚诞生,其中M语言较为独特,它的诞生就是为了在没有操作系统的机器上,进行数据存储。别忘了,Unix在1971年才发布。M语言别具一格地采用了Global多维数组,统一了复杂的内存操作和文件读写,使之成为了1970年代数据库的事实标准,特别是在医疗行业。而后Intersystems在1978年接过M语言的旗帜,在M语言上添加了SQL兼容层和ObjectScript层,前者顺应了时代的潮流,后者不仅为M语言提供了强大的OOP和各种便捷的语法糖,还让数据能以对象形式进行访问,让数据和代码更加紧密。 本文将简述多维数组、SQL、对象这3种数据操作方式,提供实例代码片段,并在运行效率、开发效率、管理效率、实用性方面讨论它们的优缺点。 为方便讨论,以学校与学生为例。对每种操作方法,都列举3种典型的用例,分别为,访问某特定ID的学生(即数据库ID索引)、访问某特定studentID的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。 现假设学生表/对象定义如下: #ObjectScript #SQL #Caché #InterSystems IRIS 16 3 1 710
文章 Stefan Wittmann · 一月 4, 2021 阅读大约需 4 分钟 从 SQL 生成 JSON 最近我一直在发布对 JSON 功能的一些更新,我很高兴许多人提供了反馈。 今天,我想将重点放在另一个方面:使用 SQL 查询生成 JSON。 #JSON #SQL 1 0 3 758
文章 姚 鑫 · 三月 30, 2021 阅读大约需 9 分钟 第十四章 使用SQL Shell界面(一) 第十四章 使用SQL Shell界面(一) 执行SQL的其他方式 可以使用$SYSTEM.SQL.Execute() 方法从Terminal命令行执行一行SQL代码,而无需调用SQL Shell。以下示例显示如何在终端提示下使用此方法: DHC-APP>SET result=$SYSTEM.SQL.Execute("SELECT TOP 5 name,dob,ssn FROM Sample.Person") DHC-APP>DO result.%Display() Name DOB SSN yaoxin 54536 111-11-1117 xiaoli 111-11-1111 姚鑫 63189 111-11-1112 姚鑫 63189 111-11-1113 姚鑫 50066 111-11-1114 5 Rows(s) Affected 如果SQL语句包含错误,则Execute()方法成功完成;否则,该方法无效。 %Display()方法返回错误信息,例如: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 749
文章 姚 鑫 · 二月 3, 2022 阅读大约需 7 分钟 第四十三章 SQL函数 DATEDIFF [toc] 第四十三章 SQL函数 DATEDIFF 日期/时间函数,返回两个日期之间指定日期部分的整数差。 #SQL #Caché 0 0 0 639
文章 姚 鑫 · 四月 6, 2021 阅读大约需 13 分钟 第十八章 定义和使用存储过程 第十八章 定义和使用存储过程 本章介绍如何在IntersystemsIRIS®数据平台上定义和使用Intersystems SQL中的存储过程。它讨论了以下内容: 存储过程类型的概述 如何定义存储过程 如何使用存储过程如 何列出存储过程及其参数。 概述 SQL例程是可执行的代码单元,可以由SQL查询处理器调用。 SQL例程有两种类型:功能和存储过程。从支持FunctionName()语法的任何SQL语句中调用函数。存储过程只能由CALL语句调用。函数接受某些输入定向参数并返回单个结果值。存储过程接受某些输入,输入输出和输出参数。存储过程可以是用户定义的函数,返回单个值。 CALL语句也可以调用函数。 与大多数关系数据库系统一样,Intersystems Iris允许创建SQL存储过程。存储过程(SP)提供存储在数据库中的可调用可调用的程序,并且可以在SQL上下文中调用(例如,通过使用呼叫语句或通过ODBC或JDBC)。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 548
文章 姚 鑫 · 三月 23, 2021 阅读大约需 12 分钟 第十三章 使用动态SQL(一) 第十三章 使用动态SQL(一) 动态SQL简介 动态SQL是指在运行时准备并执行的SQL语句。在动态SQL中,准备和执行SQL命令是单独的操作。通过动态SQL,可以以类似于ODBC或JDBC应用程序的方式在InterSystems IRIS中进行编程(除了要在与数据库引擎相同的进程上下文中执行SQL语句)。动态SQL是从ObjectScript程序调用的。 动态SQL查询是在程序执行时准备的,而不是在编译时准备的。这意味着编译器无法在编译时检查错误,并且不能在Dynamic SQL中使用预处理器宏。这也意味着执行程序可以响应用户或其他输入而创建专门的Dynamic SQL查询。 动态SQL可用于执行SQL查询。它也可以用于发出其他SQL语句。本章中的示例执行SELECT查询。 动态SQL用于执行InterSystems IRIS SQL Shell,InterSystems IRIS管理门户网站“执行查询”界面,SQL代码导入方法以及“数据导入和导出实用程序”。 在Dynamic SQL(和使用它的应用程序)中,行的最大大小为3,641,144个字符。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 526
文章 姚 鑫 · 十二月 23, 2021 阅读大约需 5 分钟 第三章 SQL聚合函数 COUNT(一) 第三章 SQL聚合函数 COUNT(一) 返回表或指定列中的行数的聚合函数。 #SQL #Caché 0 0 0 499
文章 Hao Ma · 一月 10, 2021 阅读大约需 15 分钟 InterSystems 最佳实践系列---APM – 监控 SQL 查询性能 自 Caché 2017 以后,SQL 引擎包含了一些新的统计信息。 这些统计信息记录了执行查询的次数以及运行查询所花费的时间。 对于想要对包含许多 SQL 语句的应用程序的性能进行监控和尝试优化的人来说,这是一座宝库,但访问数据并不像一些人希望的那么容易。 #SQL #性能 #监视 #Caché #InterSystems IRIS 0 0 0 479
文章 姚 鑫 · 九月 29, 2021 阅读大约需 9 分钟 第二十九章 SQL命令 DISTINCT 第二十九章 SQL命令 DISTINCT 指定仅返回不同值的SELECT子句。 大纲 SELECT [DISTINCT [BY (item {,item2})] ] | [ALL] select-item {,select-item2} 参数 DISTINCT - 可选-返回组合选择项值唯一的行。 DISTINCT BY (item {,item2}) - 可选-返回按(项)值唯一的行的选择项值。 ALL - 可选-返回结果集中的所有行。默认设置。 描述 可选DISTINCT子句出现在SELECT关键字之后、可选TOP子句和第一个SELECT-ITEM之前。 #SQL #Caché 0 0 0 449
问题 lin qijun · 九月 13, 2021 怎么获取Caché的CDC数据? 1.Caché数据库有没有办法配置然后用sql读取数据库实时变化的数据,类似于mssql那样?我看了可以写类去读取global获取journal的值,但是怎么用sql读呢? 2.不行的话,那用什么方式可以读取到journal日志文件,并输出日志文件的内容? 先谢谢大家了!!! #ObjectScript #SQL #Vue.js #平台 #数据库 #日志 #Caché #Ensemble #Global Masters 0 7 0 436
文章 Nicky Zhu · 二月 3, 2021 阅读大约需 6 分钟 IRIS中的权限管理 下一篇: 案例: 建立只能使用SQL的用户 IRIS通过认证(Authentication)与授权(Authorization)两项机制控制外部用户对系统及应用、数据资源的可访问性。因此。如需要进行权限控制,则需要通过配置认证和授权进行。 #安全 #数据库 #新手 #访问控制 #系统管理 #访问控制 #身份认证 #InterSystems IRIS #文档 0 0 0 432
文章 姚 鑫 · 十二月 28, 2021 阅读大约需 3 分钟 第八章 SQL聚合函数 MAX 第八章 SQL聚合函数 MAX 返回指定列中最大数据值的聚合函数。 #SQL #Caché 0 0 0 430
文章 Michael Lei · 八月 7, 2022 阅读大约需 2 分钟 最佳实践之改善日期范围查询的SQL性能 根据日期范围查询的SQL性能让你失望? 我有一个比较特别的技巧,可能会帮助你解决这个问题! (SQL开发人员讨厌这个!)* 如果你有一个类,在添加数据时记录时间戳,那么这些数据将与你的IDKEY值保持顺序--也就是说,当且仅当ID1<ID2时,表内所有ID和时间戳值的TimeStamp1<TimeStamp2--那么你可以利用这一知识来提高对时间戳范围的查询性能。 考虑一下下面这个表: Class User.TSOrder extends %Persistent { Property TS as %TimeStamp; Property Data as %String (MAXLEN=100, MINLEN=200); Index TSIdx on TS; Index Extent [type=bitmap, extent]; } 用过去30天内的30,000,000条随机行来填充,每天将得到1,000,000条行。 现在,如果我们想查询某一天的信息,你可以这样写: #Code Snippet #SQL #InterSystems IRIS for Health 0 0 0 426
文章 姚 鑫 · 三月 14, 2021 阅读大约需 7 分钟 第十章 SQL排序(一) 第十章 SQL排序 排序规则指定值的排序和比较方式,并且是InterSystems SQL和InterSystemsIRIS®数据平台对象的一部分。有两种基本排序规则:数字和字符串。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 426
文章 姚 鑫 · 二月 28, 2022 阅读大约需 5 分钟 第六十八章 SQL函数 JSON_ARRAY 第六十八章 SQL函数 JSON_ARRAY 以JSON数组形式返回数据的转换函数。 #SQL #Caché 0 0 0 415
文章 Jingwei Wang · 七月 14, 2022 阅读大约需 6 分钟 InterSystems SQL 的使用 - 第二部分 - 基础介绍 本文概述了InterSystems SQL的特点,特别是那些没有被SQL标准所涵盖或与InterSystems IRIS 数据平台的统一数据架构有关的特点。假定你已有SQL的知识,本文不是SQL概念或语法的介绍。 表 在InterSystems SQL中,数据是在表内呈现的。每个表都被定义为包含若干列。一个表可以包含零个或多个数据值的行。以下术语大致上是等同的。 #SQL #InterSystems IRIS for Health 0 0 0 407
文章 Johnny Wang · 四月 25, 2022 阅读大约需 39 分钟 Angular 中 Ensemble 工作流的 UI 大家应该都已经很熟悉 InterSystems Ensemble(一个集成和应用程序开发平台),每个人都知道 Ensemble Workflow 子系统是什么以及它对于自动化人类交互的作用。 对于那些不了解 Ensemble Workflow 的人,我将简要介绍它的功能(已经熟悉的朋友可以直接跳过这一部分并学习如何使用 Angular.js 中的 Workflow 接口)。 InterSystems Ensemble InterSystems Ensemble 是一个集成和应用程序开发平台,旨在集成异构系统、自动化业务流程和创建新的复杂应用程序,这些应用程序通过新的业务逻辑或新的用户界面增强集成应用程序的功能:EAI、SOA、BPM、BAM 甚至 BI (感谢 InterSystems DeepSee:一种用于开发分析应用程序的内置技术)。 Ensemble 具有以下关键功能: #GitHub #InterSystems 业务解决方案和架构 #ObjectScript #SQL #Ensemble 1 1 0 384
文章 姚 鑫 · 一月 28, 2022 阅读大约需 6 分钟 第三十七章 SQL函数 CURRENT_TIMESTAMP 第三十七章 SQL函数 CURRENT_TIMESTAMP 日期/时间函数,返回当前本地日期和时间。 大纲 CURRENT_TIMESTAMP CURRENT_TIMESTAMP(precision) 参数 precision - 一个正整数,它将时间精度指定为小数秒的位数。 默认值是0(没有小数秒); 这个默认值是可配置的。 CURRENT_TIMESTAMP返回TIMESTAMP数据类型。 描述 CURRENT_TIMESTAMP要么不接受参数,要么接受精度参数。 不允许使用空参数括号。 CURRENT_TIMESTAMP返回当前时区的本地日期和时间; 它会根据当地的时间变化进行调整,例如日光节约时间。 #SQL #Caché 0 0 0 385
文章 姚 鑫 · 三月 15, 2021 阅读大约需 6 分钟 第十章 SQL排序(二) 第十章 SQL排序(二) 查询排序 InterSystems SQL提供了排序规则功能,可用于更改字段的排序规则或显示。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 375
文章 Nicky Zhu · 二月 4, 2021 阅读大约需 7 分钟 案例: 建立只能使用SQL的用户 上一篇: IRIS中的权限管理 在上一篇文章中,我们介绍了IRIS中的权限控制体系。在本文中我们将以一个常见的实施需求为例介绍如何使用IRIS的权限配置出一个只能使用SQL的用户。 需求的分解 和所有用户需求一样,当用户提出一个需求时,除其语义显式的含义之外,还需分析其是否具有没有明确说明的含义。 对于一个只能使用SQL的用户这样一个需求,即应当结合平台的特征分解成为功能需求: 具有一个合法,可通过用户名和密码使用IRIS的用户 该用户的数据库权限 - 确认项:可以使用SQL访问所有数据库还是某几个特定的数据库? 该用户的SQL权限 - 确认项:对于特定的数据库,是否可以执行所有的DDL? - 确认项:对于特定的数据库,是否对每一张表都可以执行Select、Update等所有的DML 该用户的程序权限 - 确认项:用户是否可以通过Portal登录并管理IRIS? #安全 #数据库 #新手 #访问控制 #系统管理 #访问控制 #身份认证 #InterSystems IRIS #文档 3 3 1 315
文章 Botai Zhang · 一月 26, 2021 阅读大约需 3 分钟 利用Intersystems IRIS医疗版数据平台内置多模型整合医院信息查询业务解决方案 #JDBC #ObjectScript #SQL #数据模型 #键值 #InterSystems IRIS for Health Open Exchange app 3 2 0 334
文章 姚 鑫 · 五月 30, 2021 阅读大约需 8 分钟 第十一章 发送和接收IBM WebSphere MQ消息 第十一章 发送和接收IBM WebSphere MQ消息 InterSystems IRIS为IBM WebSphere MQ提供了一个接口,可以使用该接口在InterSystems IRIS和IBM WebSphere MQ的消息队列之间交换消息。要使用此接口,必须能够访问IBM WebSphere MQ服务器,并且IBM WebSphere MQ客户端必须与InterSystems IRIS在同一台计算机上运行。 该接口由%Net.MQSend和%Net.MQRecv类组成,这两个类都是%Net.abstractMQ的子类。这些类使用由InterSystems IRIS在所有合适的平台上自动安装的动态链接库。(这是Windows上的MQInterface.dll;其他平台的文件扩展名不同。)。反过来,InterSystems IRIS动态链接库需要IBM WebSphere MQ动态链接库。 该界面仅支持发送和接收文本数据,不支持二进制数据。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 371
文章 姚 鑫 · 三月 13, 2021 阅读大约需 9 分钟 第九章 SQL查询数据库(二) 第九章 SQL查询数据库(二) 调用用户定义函数的查询 InterSystems SQL允许您在SQL查询中调用类方法。这为扩展SQL语法提供了强大的机制。 若要创建用户定义的函数,请在持久性InterSystems IRIS类中定义一个类方法。该方法必须具有文字(非对象)返回值。这必须是一个类方法,因为在SQL查询中将没有对象实例可以在其上调用实例方法。还必须将其定义为SQL存储过程。 例如,我们可以在MyApp.Person类中定义一个Cube()方法: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 351
问题 Michael Lei · 四月 29, 2022 Cache 动态 SQL 分页 我想知道是否有更好的方法来使用动态SQL对数据集进行分页,而不是我下面使用的方法。问题是,当潜在的数据池变大时,这段代码就会变慢,以至于无法使用。在分析下面的每一行代码时,似乎速度变慢与最初的rset.%Next()迭代有关。 有没有什么不需要子查询/%VID的可用方法,比如简单的LIMIT/OFFSET? 我的代码类似于: s sql=##class(%SQL.Statement).%New() s query="SELECT *,%VID FROM (SELECT prop FROM table WHERE prop=x) WHERE %VID BETWEEN 1 AND 100" s sc=sql.%Prepare(query) s rset=sql.%Execute() while rset.%Next() {..... #对象数据模型 #SQL #Caché 0 1 1 340
文章 姚 鑫 · 十二月 22, 2021 阅读大约需 6 分钟 第二章 SQL聚合函数 AVG 第二章 SQL聚合函数 AVG 返回指定列值的平均值的聚合函数。 #SQL #Caché 0 0 0 340