本文档解释了如何使用 InterSystems IRIS Native 功能从 Java 应用程序中访问 InterSystems IRIS®数据平台的 globals。在本文中,您将首先连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个 global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 Java 应用程序中执行。
为了让您体验 IRIS Native,而又不陷入细节困境,本次探索特意设计得很简单。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 IRIS Native 的探索与真实的情况相混淆! 本文档末尾提供的参考资料将使您对在生产中使用 IRIS Native 的情况有一个很好的了解。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
本文档向您介绍 InterSystems IRIS®数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。
本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件,激活该密钥文件,然后用它来加密一个数据库。这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理那些离题的细节(尽管这些细节在执行实现时可能很重要)。有关数据库加密的完整文档,请参见 Encryption Guide(《加密指南》)。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
- 为什么数据库加密很重要
虽然加密并不能防止对机密或个人信息的所有不当或未经授权的使用或披露,但确保静止数据的加密为信息安全提供了一个重要的防御层。在数据库级别实施加密为您的信息保护控制提供了一个额外的维度。
此外,许多有关敏感信息或个人信息的法律和法规建议或要求处理数据的组织采用加密作为第一道防线。
本文档向您介绍 InterSystems IRIS®数据平台对 SQL 文本搜索的支持,它为各种语言的非结构化文本数据提供语义上下文搜索。它涵盖了以下主题:
本文档介绍了 SQL 上下文感知文本搜索,并介绍了一些与索引文本数据相关的初始任务,以进行搜索和执行 SQL 搜索。一旦您完成了这个探索,您将在一个 SQL 列中为文本搜索建立索引,并执行几种类型的搜索。这些活动被设计为只使用默认设置和功能,以便您熟悉该功能的基本原理。有关 SQL 搜索的完整文档,请参见 SQL Search Guide(《SQL 搜索指南》)。
处理非结构化文本的一个相关但独立的工具是自然语言处理(Natural Language Processing,NLP)。SQL 搜索假定您知道要查找的内容。NLP 文本分析允许您在没有事先了解文本内容的情况下分析文本的内容 。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
- 为什么 SQL 搜索很重要
第六十四章 SQL命令 ORDER BY(二)
示例
下面的示例按照RowID的反向顺序对记录进行排序:
SELECT %ID,Name
FROM Sample.Person
ORDER BY %ID DESC
下面两个示例展示了在ORDER BY子句中指定排序列的不同方法。
下面两个查询是等价的;
第一种方法使用列名作为排序项,第二种方法使用列号(选择项列表中项目的序号):
SELECT Name,Age,Home_State
FROM Sample.Person
ORDER BY Home_State,Age DESC
SELECT Name,Age,Home_State
FROM Sample.Person
ORDER BY 3,2 DESC
下面的示例按包含IRIS列表数据的字段进行排序。
因为IRIS列表是一个以格式化字符开始的编码字符串,所以本例使用$LISTTOSTRING来按实际字段数据值排序,而不是按列表元素编码:
SELECT Name,FavoriteColors
FROM Sample.Person
WHERE FavoriteColors IS NOT NULL
ORDER BY $LISTTOSTRING(FavoriteColors)
动态SQL可以使用输入参数为ORDER BY子句提供文字值;
它不能使用输入参数来提供字段名、字段别名、字段号或排序关键字。
本文档介绍了 XEP API(com.intersystems.xep),它提供了在 InterSystems IRIS®数据平台上极其快速的对Java 对象存储和检索的能力。文档概述了使用 XEP 将 Java 对象持久化的方法,并引导您通过一个简单的场景来演示该API 的主要功能。
这些演示的内容、只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节问题。有关 XEP 的完整文档,请参见 Persisting Java Objects with InterSystems XEP(《使用 InterSystems XEP 持久化)。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 上执行的那些,请参见 InterSystems First Looks技术概要》)。
- 快速的 Java 对象存储和检索
Java 是一种面向对象的语言,因此对于 Java 应用程序来说,将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会出现问题。如果您使用 JDBC 来存储和检索对象,您就面临着将对象数据转换为一组关系表,然后再将查询结果集转化为对象的问题。这个问题的通常解决方案是使用对象-关系映射(ORM)框架——如
目录
技术概要:InterSystems 云管理器(Cloud Manager) 1
插图目录
2
技术概要:InterSystems 云管理器(Cloud Manager)
本文向您介绍了 InterSystems 云管理器(InterSystems Cloud Manager,ICM),这是基于 InterSystems IRIS®数据平台的应用程序的端到端云配置和部署解决方案。
作为本指南的一部分,您将使用 ICM 在公共云中配置基础设施,并在该基础设施上部署 InterSystems IRIS。
要浏览所有的技术概要(First Looks),包括那些可以在免费的或
作为一个12岁的书呆子,我最喜欢的书是斯蒂芬-皮尔写的《英雄失败之书》,这是一本关于人类不足之处的纪事。对我来说,这本书的亮点是佩德罗-卡罗莱纳的故事,一个努力开发葡语-英语短语手册的人。这是一项崇高的事业,但由于他缺乏说英语的能力,也没有一本葡英字典,因此受到阻碍。
然而,他确实拥有一本法英词典,一本葡法词典和一种真正能干的态度。他的劳动成果对葡萄牙度假者毫无益处,却让12岁的我笑得歇斯底里。我经常愉快地回忆起这个故事,但直到我开始工作时,我才开始把自己和卡洛琳娜先生进行比较。
我的工作是一名信息建模师。信息建模师的工作可以轻描淡写地概括为把现实变成可以存储在数据库中的东西。这是通过设计信息模型来完成的。在传统的软件设计中,有三种类型的信息模型。概念性、逻辑性和物理性。你从概念模型开始,它是对我们想要数字化的东西以及它们之间的关系的一个高级描述。然后你转到逻辑模型,描述这些对象如何在数据库中理想地创建。最后,你在物理模型中实现这一点,物理模型是由用户维护数据的数据库的实际实现。
"这是信息建模的传统智慧。但这种方法是否能实现目的有待商榷"。
这是信息建模的传统智慧。但这种方法是否能实现目的有待商榷。佩德罗的短语书的故事之所以有趣,是因为其方法明显不合适,而且客观上结果很差。这在语言学上相当于用叉子喝汤。但是,当主题比较模糊时,就很难推断方法是如何以及何时有缺陷的。
第六十三章 SQL命令 ORDER BY(一)
指定结果集中行排序的SELECT子句。
大纲
ORDER BY ordering-item [ASC | DESC]{,ordering-item [ASC | DESC] ...}
参数
ordering-item- 决定排序顺序的文字。 列名、列别名或列号。ORDER BY子句可以包含单个排序项或以逗号分隔的排序项列表,以指定排序层次结构。ASC DESC- 可选-按升序()或降序(DESC)排序。 默认为升序。
描述
子句根据指定列的数据值或以逗号分隔的列序列对查询结果集中的记录进行排序。 该语句对单个结果集进行操作,这些结果集要么来自语句,要么来自多个语句的。
按逻辑(内部存储)数据值对记录进行排序,而不考虑当前的选择模式设置。
子句是SELECT语句中的最后一个子句。
它出现在FROM、、和子句之后。
以错误的顺序指定SELECT子句将产生错误。
如果语句没有指定子句,则返回的记录顺序是不可预测的。
如果SELECT语句指定了和子句,则作行的返回的记录将与子句中指定的顺序一致。
为例。
返回中年龄最大的5行数据,按从老到小的顺序排列。
在列表中执行窗口函数(包括窗口函数自己的子句)之后应用子句。 因此,窗口函数返回的值不受查询的子句的影响。
限制
如果查询指定了子句,则生成的数据是不可更新的。
第六十二章 SQL命令 OPEN
打开游标。
大纲
OPEN cursor-name
参数
cursor-name- 游标的名称,已经声明过了。 游标名称是在DECLARE语句中指定的。 游标名称区分大小写。
描述
OPEN语句根据游标的DECLARE语句中指定的参数打开游标。
一旦打开,就可以获取游标。
打开的游标必须关闭。
- 试图打开未声明的游标会出现
SQLCODE -52错误。 - 试图打开已经打开的游标会导致错误。
- 试图获取或关闭未打开的游标将导致错误。
成功的设置,即使结果集是空的。
作为语句,这只在嵌入式中支持。
通过ODBC使用支持等价的操作。
示例
下面的嵌入式SQL示例显示了一个正在打开和关闭的游标(名为):
ClassMethod Open()
{
s name = "LastName,FirstName",state = "##"
&sql(
DECLARE EmpCursorO CURSOR FOR
SELECT Name, Home_State
INTO :name, :state FROM Sample.Person
WHERE Home_State %STARTSWITH 'A'
)
w !,"BEFORE: Name=",name," State=",state
&sql(OPEN EmpCursorO)
if SQLCODE '= 0 {
w "打开错误: ",SQLCODE
q
}
n %ROWCOUNT,%ROWID
for {
&sql(FETCH EmpCursorO)
q:SQLCODE
w !,"DURING: Name=",name," State=",state
}
w !,"FETCH status SQLCODE=",SQLCODE
w !,"获取的行数 = ",%ROWCOUNT
&sql(CLOSE EmpCursorO)
w !,"AFTER: Name=",name," State=",state
}
第六十一章 SQL命令 LOCK
锁表
大纲
LOCK [TABLE] tablename IN EXCLUSIVE MODE [WAIT seconds]
LOCK [TABLE] tablename IN SHARE MODE [WAIT seconds]
参数
tablename- 要锁定的表的名称。Tablename必须是已经存在的表。 表名可以是限定的(schema.table),也可以是非限定的()。 非限定表名接受默认模式名。 模式搜索路径被忽略。- / -
IN EXCLUSIVE MODE关键字短语创建一个常规的IRIS锁。 关键字短语创建一个共享的IRIS锁。 - - 可选-一个整数,指定在超时前尝试获取锁的秒数。 如果省略,则应用系统默认超时时间。
描述
和是同义词。
命令显式锁定SQL表。
此表必须是已存在的表,对其具有必要的特权。
如果是一个不存在的表,LOCK会失败并出现编译错误。
如果是临时表,则命令执行成功,但不执行任何操作。
如果是视图,则命令失败,并出现错误。
命令用来反转操作。
显式LOCK将保持有效,直到针对同一模式发出显式,或者直到进程终止。
可以使用多次锁定一个表; 必须显式解锁表,解锁次数为表被显式锁定的次数。 每个必须指定与相应LOCK相同的模式。
权限
LOCK命令是一个特权操作。
在使用之前,进程必须对指定的表拥有
第六十章 SQL命令 JOIN(二)
单向外部联接
IRIS支持单向外部联接:左外部联接和右外部联接。
使用标准的“inner”联接时,当一个表的行链接到第二个表的行时,第一个表中找不到第二个表中对应行的行将从输出表中排除。
使用单向外联接时,即使第二个表中没有匹配项,第一个表中的所有行也会包括在输出表中。使用单向外连接,第一个表会从第二个表中取出相关信息,但不会因为第二个表中缺少匹配项而牺牲自己的行。
例如,如果查询首先列出Table1并创建一个左外部联接,那么它应该能够看到Table1中的所有行,即使它们在Table2中没有对应的记录。
在指定单向外联接时,在子句中命名表的顺序非常重要。对于左外部联接,指定的第一个表是联接的源表。对于右外部联接,指定的第二个表是联接的源表。因此,或%STARTTABLE优化关键字不能与一起使用。以下语法相互矛盾,导致错误:。
外部联接语法
IRIS支持两种表示外连接的格式:
ANSI标准语法:LEFT OUTER JOIN和RIGHT OUTER JOIN。SQL标准语法将外联接放在语句的子句中,而不是子句中,如下例所示:
- ODBC规范外部联接扩展语法,使用转义语法
{OJ Join-Expression},其中Join-Expression
技术概要:InterSystems IRIS 和 UIMA
本技术概要(First Look)快速介绍了 InterSystems IRIS® 数据平台如何实施和补充非结构化信息管理架构 (UIMA)。在简要概述 UIMA 以及 InterSystems IRIS 如何对其进行补充之后,您将有机会通过基本的动手练习来在实际应用中了解 InterSystems IRIS。 要浏览技术概要(First Look)的所有内容,包括可以在InterSystems IRIS的免费评估实例上执行的内容,请参阅InterSystems 技术概要。
关于 UIMA
UIMA 是管理分析非结构化信息(如文本和视频)的标准。对于非结构化信息,计算机通常需要几个步骤才能将信息转化为可操作的结构化数据。例如,扫描的文档将文本转变为机器可读版本之前需要OCR,即使这样,在应用额外的 NLP 策略之前,计算机也不能很好地处理自然语言文本。由于像这样的流程包括本质上非常不同的步骤,因此单个工具不太可能处理所有这些步骤。
技术概要:InterSystems API 管理器
本文档将向您介绍InterSystems API管理器(InterSystems API Manager ,IAM),解释了它的工作原理,并让您开始在自己的实例上探索它的功能。
InterSystems API管理器是如何工作的?
InterSystems API管理器是 InterSystems IRIS®数据平台的一个组件,它允许您利用由 InterSystems IRIS 应用程序暴露或消费的微服务和 API。作为 InterSystems IRIS的 服务器和应用程序之间的 API 网关(gateway),API 管理器使您能够更有效地监视和控制服务器端 API 和客户端应用程序之间的调用流量。 要了解有关 InterSystems API管理器的更多信息,您可以观看这个概述视频。
试一试!
第五十九章 SQL命令 JOIN(一)
基于两个表中的数据创建表的SELECT子句。
大纲
table1 [[AS] t-alias1] CROSS JOIN table2 [[AS] t-alias2] |
table1 [[AS] t-alias1] , table2 [[AS] t-alias2]
table1 [[AS] t-alias1]
NATURAL [INNER] JOIN |
NATURAL LEFT [OUTER] JOIN |
NATURAL RIGHT [OUTER] JOIN |
table2 [[AS] t-alias2]
table1 [[AS] t-alias1]
[INNER] JOIN |
LEFT [OUTER] JOIN |
RIGHT [OUTER] JOIN |
FULL [OUTER] JOIN
table2 [[AS] t-alias2]
ON condition-expression
table1 [[AS] t-alias1]
[INNER] JOIN |
LEFT [OUTER] JOIN |
RIGHT [OUTER] JOIN |
table2 [[AS] t-alias2]
USING (identifier-commalist)
(上述联接语法用于SELECT语句FROM子句。
第五十八章 SQL命令 %INTRANSACTION
显示事务状态。
大纲
%INTRANSACTION
%INTRANS
参数
无
描述
%INTRANSACTION语句设置SQLCODE以指示事务状态:
- 如果当前在事务中,则
SQLCODE=0。 - 如果不在事务中,则
SQLCODE=100。
事务正在进行时,%INTRANSACTION返回。此事务可以是由START TRANSACTION或发起的SQL事务。它也可以是由发起的事务。
事务嵌套对没有影响。对%INTRANSACTION没有影响。
还可以使用确定事务状态。仅指示事务是否正在进行。指示事务是否正在进行以及当前的事务级别数。
示例
以下嵌入式SQL示例显示如何设置:
ClassMethod %INTRANSACTION()
{
n SQLCODE
&sql(%INTRANSACTION)
w "Before %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
&sql(SET TRANSACTION %COMMITMODE EXPLICIT)
n SQLCODE
&sql(%INTRANSACTION)
w "SetTran %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
&sql(START TRANSACTION)
n SQLCODE
&sql(%INTRANSACTION)
w "StartTran %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
&sql(SAVEPOINT a)
n SQLCODE
&sql(%INTRANSACTION)
w "Savepoint %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
&sql(ROLLBACK TO SAVEPOINT a)
n SQLCODE
&sql(%INTRANSACTION)
w "Rollback to Savepoint %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
&sql(COMMIT)
n SQLCODE
&sql(%INTRANSACTION)
w "After Commit %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL
}
技术概要:InterSystems IRIS Native API for Python
目录
技术概要: InterSystems IRIS Native API for Python 1
技术概要:InterSystems IRIS Native API for Python
本技术概要(First Look)指南解释了如何使用 InterSystems IRIS Native 功能从 Python 应用程序访问 InterSystems IRIS® globals。IRIS Native 还允许您运行 ObjectScript 方法、函数和例程。在本文中,您将首先连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个 global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。
技术概要:LDAP 和 InterSystems 产品
目录
技术概要: LDAP 和 InterSystems 产品 1
- 设置 LDAP 身份验证 1
- 探索 LDAP 用户和组 4
- User1: 操作员 4
- User2: 管理者 5
- User3: 开发者 5
- 6
- 6
技术概要:LDAP 和 InterSystems 产品
InterSystems IRIS®数据平台可以与 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)服务器集成,从而可以无缝地使用这种流行技术对用户进行身份验证。通过 LDAP 提供授权也很容易。
当用户尝试登录 InterSystems IRIS 时,用户名和密码会被发送到 LDAP 服务器,以验证该用户是否存在。一旦用户的身份得到验证,LDAP 服务器就会向 InterSystems IRIS 发送关于用户属于哪些组的信息。
本技术概要(First Look)通过重点概述和基本的实践示例,向您介绍在 InterSystems IRIS®数据平台上使用容器(Container)的基本原理。您将了解容器的目的、重要性和好处,以及 InterSystems 如何实现它们的具体细节。
有关 Docker 容器和 InterSystems IRIS 的完整文档,请参见 Running InterSystems Products in Containers(《在容器中运行 InterSystems 产品》),以及 InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)的 ICM Overview(ICM 概述)章节。Learn More About InterSystems IRIS in Containers(了解容器中的的更多信息)部分提供了到其他参考资料的链接。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
- 为什么是容器(Container)?
容器(Container
第五十七章 SQL命令 INTO
一个SELECT子句,指定在宿主变量中存储选定的值。
大纲
INTO :hostvar1 [,:hostvar2]...
参数
:hostvar1- 在宿主语言中声明的输出宿主变量。 当在INTO子句中指定时,变量名前面加冒号(:)。 主机变量可以是局部变量(非下标或下标)或对象属性。 可以将多个变量指定为逗号分隔的列表、单个下标数组变量或逗号分隔的列表和单个下标数组变量的组合。
描述
INTO子句和主机变量仅在嵌入式SQL中使用。它们不在动态SQL中使用。在动态SQL中,类为输出变量提供了类似的功能。在通过、或动态SQL处理的查询中指定子句会导致错误。
子句可以在、DECLARE或语句中使用。子句对于所有三个语句都是相同的;本页上的示例都引用语句。
子句使用在列表中检索(或计算)的值来设置相应的输出主机变量,从而使这些返回的数据值可用于ObjectScript。在中,可选子句出现在列表之后、子句之前。
注意:编译嵌入式SQL时,输出主机变量将初始化为空字符串。这可以防止在执行时出现错误。因此,只有当时,主机变量才包含有意义的值。在使用输出主机变量值之前,请始终检查SQLCODE。当或为负数时,不要使用这些变量值。
主机变量
主机变量只能包含单个值。因此,嵌入式SQL中的只检索一行数据。
InterSystems很高兴地宣布一个全新的开发者下载网站 提供InterSystems IRIS社区版和InterSystems IRIS for Health社区版的完整配套版本。 这些都是免费提供给应用开发者使用的。
你可以选择直接从InterSystems开发者社区 直接 下载 InterSystems IRIS.
第五十六章 SQL命令 INSERT OR UPDATE
在表中添加新行或更新表中的现有行。
大纲
INSERT OR UPDATE [%keyword] [INTO] table
SET column = scalar-expression {,column2 = scalar-expression2} ... |
[ (column{,column2} ...) ] VALUES (scalar-expression {,scalar-expression2} ...) |
VALUES :array() |
[ (column{,column2} ...) ] query |
DEFAULT VALUES
参数
%keyword- 可选-以下一个或多个关键字选项,以空格分隔:%NOCHECK、%NOFPLAN、、、、、、。- - 要对其执行插入操作的表或视图的名称。此参数可以是子查询。关键字是可选的。
column- 可选-与提供的值列表顺序对应的列名或以逗号分隔的列名列表。如果省略,值列表将按列号顺序应用于所有列。- - 为相应列字段提供数据值的标量表达式或以逗号分隔的标量表达式列表。
:array()
第五十五章 SQL命令 INSERT(四)
嵌入式SQL和动态SQL示例
下面的嵌入式SQL示例创建一个新表SQLUser.MyKids。下面的示例使用INSERT用数据填充此表。在插入示例之后,提供了一个删除的示例。
ClassMethod Insert2()
{
&sql(
CREATE TABLE SQLUser.MyKids
(
KidName VARCHAR(16) UNIQUE NOT NULL,
KidDOB INTEGER NOT NULL,
KidPetName VARCHAR(16) DEFAULT 'no pet'
)
)
if SQLCODE=0 {
w !,"创建的表"
} elseif SQLCODE=-201 {
w !,"表已存在"
q
} else {
w !,"CREATE TABLE失败。SQLCODE=",SQLCODE
}
}
下面的嵌入式示例插入具有两个字段值的行(第三个字段采用默认值)。请注意,表架构名称由#SQLCompile Path
第五十四章 SQL命令 INSERT(三)
SQLCODE错误
默认情况下,INSERT是要么全有要么全无的事件:要么完全插入行,要么根本不插入行。 IRIS返回一个状态变量SQLCODE,指示插入是成功还是失败。要将行插入到表中,插入操作必须满足所有表、字段名和字段值要求,如下所示。
表:
- 该表必须已经存在。尝试插入到不存在的表会导致
SQLCODE-30错误。 - 不能将该表定义为
READONLY。尝试编译引用ReadOnly表的插入会导致错误。请注意,此错误是在编译时发出的,而不是在执行时发出的。 - 如果通过视图更新表,则不能将该视图定义为只读。尝试这样做会导致错误。如果视图基于分割表,则不能通过使用定义的视图进行插入。尝试这样做会导致
SQLCODE-35,其中不允许基于带有选项条件的切片表的视图()使用。 - 必须具有适当的权限才能插入表
字段名称:
- 该字段必须存在。尝试插入不存在的字段会导致错误。
- 插入必须指定所有必填字段。尝试插入行而不为必填字段指定值会导致错误。
- 插入不能包含重复的字段名称。尝试插入包含两个同名字段的行会导致错误。
- 插入不能包含定义为的字段。尝试编译引用字段的插入会导致错误。请注意,此错误现在在编译时发出,而不是仅在执行时发出。使用链接表向导链接表时,可以选择将字段定义为只读。
亲爱的开发者们,
是否准备参加InterSystems 2021全球峰会呢?不要错过InterSystems Developer Community、Open Exchange和Global Masters的专题会议!
⚡️ "Win. Win. Win with InterSystems Developer Ecosystem" VSummit21 session ⚡️

🎁 注意:所有参会者都将获得额外奖励哦~
分享嘉宾:
🗣 @Anastasia Dyubaylo, InterSystems开发者社区经理
🗣 @Lena Evsikova, Product Owner of InterSystems Open Exchange
🗣 @Olga Zavrazhnova, Customer Advocacy Manager, InterSystems
第五十三章 SQL命令 INSERT(二)
流数据
可以将以下类型的数据值插入到流字段中:
- 对于任何表:字符串文字或包含字符串文字的主机变量,例如:
set literal="Technique 1"
//do the insert; use a string
&sql(INSERT INTO MyStreamTable (MyStreamField) VALUES (:literal))
- 对于非切片表:对流对象的对象引用(
OREF)。 IRIS打开此对象并将其内容复制到新的流字段中。例如:
set oref=##class(%Stream.GlobalCharacter).%New()
do oref.Write("Technique non-shard 1")
//do the insert; use an actual OREF
&sql(INSERT INTO MyStreamTable (MyStreamField) VALUES (:oref))
或流的OREF的字符串版本,例如:
set oref=##class(%Stream.GlobalCharacter).%New()
do oref.Write("Technique non-shard 2")
//next line converts OREF to a string OREF
set string=oref_""
//do the insert
&sql(INSERT INTO MyStreamTable (MyStreamField) VALUES (:string))
10月26日-29日,InterSystems 2021全球线上峰会将聚焦于“Analytics”,为您提供全球先进经验和分享。
第五十二章 SQL命令 INSERT(一)
向表中添加新行(或多行)。
大纲
INSERT [%keyword] [INTO] table
SET column1 = scalar-expression1
{,column2 = scalar-expression2} ... |
[ (column1{,column2} ...) ]
VALUES (scalar-expression1 {,scalar-expression2} ...) |
VALUES :array() |
[ (column1{,column2} ...) ] query |
DEFAULT VALUES
参数
%keyword- 可选参数:%NOCHECK,%NOFPLAN, , , , , , 。- - 要对其执行插入操作的表或视图的名称。此参数可以是子查询。关键字是可选的。表名(或视图名)可以是限定的(
schema.table),也可以是不限定的()。使用架构搜索路径(如果提供)或默认架构名称将非限定名称与其架构匹配。
第五十一章 SQL命令 HAVING(二)
In和%INLIST谓词
IN谓词用于将值与一系列非结构化的项进行匹配。
%INLIST谓词是 IRIS扩展,用于将值与列表结构的元素进行匹配。
使用任一谓词,都可以执行相等比较和子查询比较。
在中有两种格式。第一个用作使用与OR运算符链接在一起的多个相等比较的速记。例如:
SELECT Name, Home_State FROM Sample.Person
GROUP BY Home_State
HAVING Home_State IN ('ME','NH','VT','MA','RI','CT')
如果Home_State等于括号列表中的任意值,则计算为TRUE。列表元素可以是常量或表达式。排序规则适用于IN比较,因为它适用于相等性测试。默认情况下,比较使用字段定义的排序规则类型;默认情况下,字符串字段定义为,不区分大小写。
当日期或时间用于IN谓词相等比较时,会自动执行适当的数据类型转换。如果子句字段是类型,则DATE或类型的值将转换为。如果子句字段为类型,则或类型的值将转换为。如果子句字段为TIME类型,则或类型的值将转换为。
下面的示例都执行相同的相等比较并返回相同的数据。 字段指定对于每个成功的相等比较只返回一条记录。 字段的数据类型为:
SELECT Name,DOB FROM Sample.Person
GROUP BY DOB
HAVING DOB IN ({d '2014-01-02'},{d '1990-04-25'})
第五十章 SQL命令 HAVING(一)
对一组数据值指定一个或多个限制性条件的SELECT子句。
大纲
SELECT field
FROM table
GROUP BY field
HAVING condition-expression
SELECT aggregatefunc(field %AFTERHAVING)
FROM table
[GROUP BY field]
HAVING condition-expression
参数
condition-expression- 由一个或多个布尔谓词组成的表达式,用于控制要检索哪些数据值。
描述
可选的HAVING子句出现在子句、可选的WHERE和子句之后,可选的子句之前。
语句的子句限定或取消查询选择中的特定行。符合条件的行是条件表达式为真的行。条件表达式是一系列逻辑测试(谓词),它们可以通过和逻辑运算符链接起来。
子句类似于子句,它可以在组上操作,而不是在整个数据集上操作。因此,在大多数情况下,HAVING子句要么与使用关键字的聚合函数一起使用,要么与子句结合使用,或者两者兼而有之。
子句条件表达式还可以指定聚合函数。子句条件表达式不能指定聚合函数。下面的示例显示了这一点:
SELECT Name,Age,AVG(Age) AS AvgAge
FROM Sample.Person
HAVING Age > AVG(Age)
ORDER BY Age


