通过持续进行云投资,InterSystems能够提供礼宾级的云服务。
第十二章 使用嵌入式SQL(一)
可以将SQL语句嵌入InterSystemsIRIS®数据平台使用的ObjectScript代码中。这些嵌入式SQL语句在运行时转换为优化的可执行代码。
嵌入式SQL有两种:
- 一个简单的嵌入式SQL查询只能返回单行中的值。简单嵌入式SQL还可以用于单行插入,更新和删除以及其他SQL操作。
- 基于游标的嵌入式SQL查询可以遍历查询结果集,并从多行中返回值。基于游标的嵌入式SQL也可以用于多行更新和删除SQL操作。
注意:嵌入式SQL不能输入到Terminal命令行,也不能在XECUTE语句中指定。要从命令行执行SQL,请使用$SYSTEM.SQL.Execute()方法或SQL Shell接口。
编译嵌入式SQL
当包含嵌入式SQL的例程被编译时,嵌入式SQL不会被编译。 相反,嵌入式SQL的编译发生在SQL代码的第一次执行(运行时)。 第一次执行定义了一个可执行的缓存查询。 这与动态SQL的编译类似,在动态SQL中,直到执行SQL Prepare操作才编译SQL代码。
直到第一次执行例程,嵌入式SQL代码才会根据SQL表和其他实体进行验证。 因此,可以编译包含嵌入式SQL的持久化类的例程或方法,这些SQL引用在例程编译时不存在的表或其他SQL实体。 由于这个原因,大多数SQL错误是在运行时执行时返回的,而不是编译时返回的。
第十一章 SQL隐式联接(箭头语法)
InterSystems SQL提供了一个特殊的–>运算符,作为从相关表中获取值的快捷方式,而在某些常见情况下无需指定显式的JOIN即可。可以使用此箭头语法代替显式联接语法,也可以将其与显式联接语法结合使用。箭头语法执行左外部联接。
箭头语法可用于类的属性或父表的关系属性的引用。其他类型的关系和外键不支持箭头语法。不能在ON子句中使用箭头语法(–>)。
属性引用
可以使用- >操作符作为从“引用表”获取值的简写。
例如,假设定义了两个类:Company:
Class Sample.Company Extends %Persistent [DdlAllowed]
{
/// The Company name
Property Name As %String;
}
Employee:
Class Sample.Employee Extends %Persistent [DdlAllowed]
{
/// The Employee name
Property Name As %String;
/// The Company this Employee works for
Property Company As Company;
}
Employee类包含一个属性,该属性是对Company对象的引用。
在基于对象的应用程序中,可以使用点语法遵循此引用。
嗨,开发者们,
欢迎查询 [InterSystems Developers YouTube 频道] InterSystems Developers YouTube Channel:
|
按观看次数排名前 10 的视频 |
||
| № | Video | Views |
| 1 | Active Directory 与 LDAP 的集成 | 13 079 |
| 2 | FHIR 上的 SMART:基础知识 | 7 463 |
| 3 | 构建现代 Web 应用程序 | 6 133 |
| 4 | 使用 Visual Studio Code 编写 ObjectScript | 5 491 |
| 5 | 使用 FHIR 进行开发 - REST API | 5 195 |
| 6 | 使用 IRIS 社区版、GitHub、Docker 和 VSCode 创建你的第一段 InterSystems ObjectScript 代码 | 1 487 |
| 7 | 托管文件传输 | 1 326 |
| 8 | 规模调整和容量计划 | 1 200 |
| 9 | 使用 Visual Studio Code 和 ObjectScript | 1 155 |
| 10 | 5 分钟内为 InterSystems IRIS 创建 CRUD REST API | 1 013 |
大家好, 现在是九局下半,但在我们的技术世界大赛还留了几手
JDBC 兼容性状态 **这是一篇 [InterSystems 常见问题解答网站](https://faq.intersystems.co.jp/)文章。
版本 2009.1 及更高版本与 JDBC 4.0 API 兼容。 有关详细信息,请查阅以下文档。 [关于 JDBC 支持](First Look: JDBC and InterSystems Databases - InterSystems IRIS Data Platform 2020.3
)
第十章 SQL排序(二)
查询排序
InterSystems SQL提供了排序规则功能,可用于更改字段的排序规则或显示。
我们的承诺
为了建设一个开放、包容的环境,我们(社区贡献者、社区版主、社区经理)承诺为使用InterSystems开发者社区的所有成员提供没有任何骚扰的环境,而不论其年龄、体型、残障、种族、性别认同和表达、经验水平高低、国籍、外表、种族、宗教或性取向。
第十章 SQL排序
排序规则指定值的排序和比较方式,并且是InterSystems SQL和InterSystemsIRIS®数据平台对象的一部分。有两种基本排序规则:数字和字符串。
- 数值排序规则按以下顺序基于完整数字对数字进行排序:
null,然后是负数,从最大到最小,零,然后是正数,从最小到最大。这将创建如下序列:–210,–185,–54,–34,-.02、0、1、2、10、17、100、120。 - 字符串归类通过对每个顺序字符进行归类来对字符串进行排序。这将创建以下顺序:
null,A,AA,AA,AAA,AAB,AB,B。对于数字,这将创建以下顺序:–.02,–185,–210,–34,–54 ,0、1、10、100、120、17、2。
默认的字符串排序规则是SQLUPPER;为每个名称空间设置此默认值。 SQLUPPER排序规则将所有字母都转换为大写(出于排序的目的),并在字符串的开头附加一个空格字符。此转换仅用于整理目的;在InterSystems中,无论所应用的排序规则如何,SQL字符串通常以大写和小写字母显示,并且字符串的长度不包括附加的空格字符。
时间戳记是一个字符串,因此遵循当前的字符串排序规则。但是,由于时间戳是ODBC格式,因此如果指定了前导零,则字符串排序规则与时间顺序相同。
第九章 SQL查询数据库(二)
调用用户定义函数的查询
InterSystems SQL允许您在SQL查询中调用类方法。这为扩展SQL语法提供了强大的机制。
若要创建用户定义的函数,请在持久性InterSystems IRIS类中定义一个类方法。该方法必须具有文字(非对象)返回值。这必须是一个类方法,因为在SQL查询中将没有对象实例可以在其上调用实例方法。还必须将其定义为SQL存储过程。
例如,我们可以在MyApp.Person类中定义一个Cube()方法:
Class MyApp.Person Extends %Persistent [DdlAllowed]
{
/// Find the Cube of a number
ClassMethod Cube(val As %Integer) As %Integer [SqlProc]
{
RETURN val * val * val
}
}
可以使用CREATE FUNCTION,CREATE METHOD或CREATE PROCEDURE语句创建SQL函数。
要调用SQL函数,请指定SQL过程的名称。可以在可能指定标量表达式的任何地方以SQL代码调用SQL函数。函数名称可以使用其架构名称进行限定,也可以不限定。不合格的函数名称采用用户提供的模式搜索路径或系统范围内的默认模式名称。函数名称可以是定界标识符。
第九章 SQL查询数据库
查询类型
查询是执行数据检索并生成结果集的语句。查询可以包含以下任意项:
- 一个简单的
SELECT语句,用于访问指定表或视图中的数据。 - 具有
JOIN语法的SELECT语句,用于访问多个表或视图中的数据。 - 合并多个
SELECT语句的结果的UNION语句。 - 使用
SELECT语句为封闭的SELECT查询提供单个数据项的子查询。 - 在嵌入式SQL中,这是一个使用SQL游标通过
FETCH语句访问多行数据的SELECT语句。
使用SELECT语句
SELECT语句从一个或多个表或视图中选择一行或多行数据。下面的示例显示了一个简单的SELECT:
SELECT Name,DOB FROM Sample.Person WHERE Name %STARTSWITH 'A' ORDER BY DOB

在此的示例Name和DOB是Sample.Person表中的列(数据字段)。
在SELECT语句中必须指定子句的顺序是:SELECT DISTINCT TOP ...选择项INTO ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY。这是命令语法顺序。所有这些子句都是可选的,但SELECT选择项除外。
SELECT子句的执行顺序
可以通过注意SELECT语句的语义处理顺序(与SELECT语法顺序不同)来理解
原文在这里。
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
亲爱的社区开发者们,
我很高兴地向大家介绍一位我们的新版主@姚鑫
亲爱的社区开发者们,
北京时间3月19日下午14:00-16:00,我们将举办一次线上直播,聚焦InterSystems 数据平台与WRC服务,为您答疑解惑!今天隆重向大家介绍此次直播的主讲人!
亲爱的社区开发者们,
我们的社区正在日渐壮大!我们现在已经有了英语、西语、葡语、日语和中文社区,不论你在哪个社区发帖或评论,都可以获得Global Master倡导中心的积分,而最重要的是,在中文社区,你会获得更高积分!
用 2019 版IRIS怎么实现大数据量表的分页查询?比如表里有200万条数据。
第八章 SQL修改数据库
可以对现有的表使用SQL语句,也可以对相应的持久化类使用ObjectScript操作来修改InterSystems IRIS®数据平台数据库的内容。 不能修改定义为只读的持久类(表)。
使用SQL命令为维护数据的完整性提供了自动支持。 SQL命令是一个原子操作(全部或没有)。 如果表上定义了索引,SQL将自动更新它们以反映更改。 如果定义了任何数据或引用完整性约束,SQL将自动执行它们。 如果有任何已定义的触发器,执行这些操作将拉动相应的触发器。
插入数据
可以使用SQL语句或设置和保存持久化类属性将数据插入表中。
使用SQL插入数据
INSERT语句将一条新记录插入SQL表中。
可以插入一条记录或多条记录。
下面的示例插入一条记录。 它是插入单个记录的几种可用语法形式之一:
INSERT INTO MyApp.Person
(Name,HairColor)
VALUES ('Fred Rogers','Black')
以下示例通过查询现有表中的数据插入多条记录:
INSERT INTO MyApp.Person
(Name,HairColor)
SELECT Name,Haircolor FROM Sample.Person WHERE Haircolor IS NOT NULL
还可以发出INSERT或UPDATE语句。
新冠肺炎疫情大流行史无前例地推动着医疗数字化发展,这一进程不仅影响了医疗服务的提供方式,更带来深刻的行业服务模式变革。经济学人邀请了来自数据技术提供商InterSystems、初级医疗服务提供商Babylon、咨询服务提供商埃森哲、数字化医疗解决方案提供商Kaiser Permanente的专家,从各自的领域和观察出发解读多个热点话题。
亲爱的社区用户,您好!
我们在 Global Masters上推出了商业服务奖励计划,这是一个绝佳的契机,您可以在开发者社区和我们的社交媒体上宣传贵公司的应用、解决方案和服务,甚至为您的 OEX 应用兑换 Google AdWords 推广!
大家好!InterSystems Global Masters 倡导中心与开发者社区紧密联系并不是秘密。 为开发者社区做出任何贡献都会带来 Global Masters 积分。 所以, 我们准备了一份关于如何在 Global Masters 以最佳方式获得积分的简短指南。
亲爱的社区开发者,
我们诚挚邀请您参加 InterSystems编程大奖赛获奖成员线上见面会!
时间: 周五(2021年3月12日)-22:00(北京时间)
在此次线上见面会,您可以:
- 了解获胜者的个人履历
- 观看获奖应用的简短demo
- 针对此次大奖赛使用到的技术、奖金和各类疑问,您可以畅所欲言,各抒己见,为下一次竞赛做准备!
线上见面会参与成员:
- @Dmitriy Maslennikov, CaretDev Corp联合创始人、首席技术官和开发者倡导者,
- @José Roberto Pereira, Shift Consultoria e Sistemas Ltda BI开发者
- @Henrique Dias Dias, Sao Paulo Federal Court 系统管理专家/数据库管理员
- @Botai Zhang, 中国开发者
- @Weiwei Yang, 中国开发者
- @Evgeny Shvarov, InterSystems 开发者生态系统经理
您还将有机会在一个特别的网络研讨会上向我们的开发人员提出任何问题。
欢迎您参加线上见面会!
现在就来报名吧!
第七章 SQL表之间的关系
要在表之间强制执行引用完整性,可以定义外键。修改包含外键约束的表时,将检查外键约束。
定义外键
有几种方法可以在InterSystems SQL中定义外键:
- 可以定义两个类之间的关系。定义关系会自动将外键约束投影到SQL。
- 可以在类定义中添加显式外键定义(对于关系未涵盖的情况)。
- 可以使用
CREATE TABLE或ALTER TABLE命令添加外键。可以使用ALTER TABLE命令删除外键。
用作外键引用的RowID字段必须是公共的。引用隐藏的RowID?有关如何使用公用(或专用)RowID字段定义表的信息。
一个表(类)的外键最大数目为400。
外键引用完整性检查
外键约束可以指定更新或删除时的引用操作。
在CREATE TABLE reference action子句中描述了使用DDL定义这个引用操作。
在类定义引用的OnDelete和OnUpdate外键关键字中定义了一个持久化类来定义这个引用操作,该类投射到一个表。
在创建分片表时,这些引用操作必须设置为无操作。
默认情况下,InterSystemsIRIS®数据平台对INSERT,UPDATE和DELETE操作执行外键引用完整性检查。如果该操作将违反参照完整性,则不会执行;该操作将发出SQLCODE -121,-122,-123或-124错误。
亲爱的开发者,
最近我们收到很多类似“如何成为一个活跃(Active)、有贡献值的成员”的问题。
条件很简单!
第六章 SQL定义和使用视图
视图是一种虚拟表,由执行时通过SELECT语句或几个SELECT语句的UNION从一个或多个物理表中检索到的数据组成。 SELECT可以通过指定表或其他视图的任意组合来访问数据。因此,存储了视图的视图提供了物理表的所有灵活性和安全性特权。
InterSystemsIRIS®数据平台上的InterSystems SQL支持在视图上定义和执行查询的功能。
注意:不能对以只读方式安装的数据库中存储的数据创建视图。
无法在通过ODBC或JDBC网关连接链接的Informix表中存储的数据上创建视图。这是因为InterSystems IRIS查询转换对这种类型的查询使用FROM子句中的子查询。 Informix不支持FROM子句子查询。
创建一个视图
可以通过几种方式定义视图:
- 使用SQL
CREATE VIEW命令(在DDL脚本中或通过JDBC或ODBC)。 - 使用管理门户的“创建视图”界面。
视图名称:不合格的视图名称是一个简单的标识符:MyView。合格的视图名称由两个简单的标识符组成,即模式名称和视图名称,以句点分隔:MySchema.MyView。视图名称和表名称遵循相同的命名约定,并对不合格的名称执行相同的架构名称解析。同一模式中的视图和表不能具有相同的名称。
可以使用$SYSTEM.SQL.ViewExists()方法确定视图名称是否已存在。
支持HL7 转FHIR,CDA 转FHIR,FHIR转HL7的云服务
亲爱的社区开发者们,
InterSystems 编程大奖赛 圆满结束!这是一场令人难以置信的竞赛,参与的应用程序和开发者数量创下了记录!
谢谢大家的参与!现在是时候宣布获奖者了!

让我们把掌声送给这些开发者们!
InterSystems编程大奖赛取得圆满成功,来自中文社区的两位参赛者获得项目奖励,项目简介如下。
第五章 SQL定义表(三)
使用DDL定义表
可以使用标准DDL命令在InterSystems SQL中定义表:
InterSystems SQL中可用的DDL命令
ALTER命令ALTER TABLE,ALTER VIEWCREATE命令CREATE TABLE,CREATE VIEW,CREATE INDEX,CREATE TRIGGERDROP命令DROP TABLE,DROP VIEW,DROP INDEX,DROP TRIGGER
可以通过多种方式执行DDL命令,包括:
- 使用动态SQL。
- 使用嵌入式SQL。
- 使用DDL脚本文件。
- 使用ODBC调用。
- 使用JDBC调用。
在嵌入式SQL中使用DDL
在ObjectScript方法或例程中,可以使用嵌入式SQL来调用DDL命令。
例如,以下方法创建一个Sample.Employee表:
/// d ##class(PHA.TEST.SQL).CreateTable()
ClassMethod CreateTable() As %String
{
&sql(CREATE TABLE Sample.

