文章 Hao Ma · 十一月 2, 2021 13m read

本文档将向您介绍 InterSystems IRIS®数据平台如何通过使用应用服务器进行分布式缓存,利用企业缓存协议(Enterprise Cache Protocol,ECP)来扩展用户容量(User Volume)。
本指南介绍了如何使用分布式缓存架构进行扩展,并介绍了与部署 InterSystems IRIS 分布式缓存集群相关的一些初始任务。一旦您完成了本指南,您将对分布式缓存集群的工作原理和设置方法有一个基本的了解。
这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理细节(尽管这些细节在执行实现时可能很重要)。有关使用 InterSystems IRIS 分布式缓存和 ECP 的完整文档,请参见本指南末尾 " For More Information (更多信息)" 部分中的参考资料列表。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

1    问题:扩展用户容量(User Volume)    
当用户通过应用程序连接到您的 InterSystems IRIS 数据库时,他们需要快速、有效地访问数据。

0
0 388
文章 Hao Ma · 十一月 2, 2021 18m read

本文档将向您展示如何开发 REST 接口。您可以将这些 REST 接口与 UI 工具(如 Angular)一起使用,以提供对数据库和互操作性产品的访问。您也可以使用它们支持外部系统访问 InterSystems IRIS®数据平台应用程序。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

1    为什么提供 REST 接口
如果您需要从外部系统访问 InterSystems IRIS 数据库中的数据,或者想为这些数据提供用户界面,您可以通过定义 REST 接口来实现。REST——REpresentational State Transfer——是一种使用公开的 URL 从另一个系统检索、添加、更新或删除数据的方法。REST 基于 HTTP,并使用 HTTP 动词 POST、GET、PUT 和 DELETE 映射到数据库应用程序常见的创建、读取、更新和删除 (CRUD)功能。您还可以在 REST 中使用其他 HTTP 动词,如 HEAD、PATCH 和 OPTIONS。

0
0 341
文章 Louis Lu · 十一月 2, 2021 11m read

本技术概览( First Look )介绍了 InterSystems IRIS® 数据平台 支持使用 Natural Language ProcessingNLP,自然语言处理 )文本分析的能力,NLP文本分析以各种自然语言对非结构化文本数据进行语义分析。能让您发现有关大量文本文档内容的有用信息,而无需事先了解文本内容。

本技术概览( First Look )介绍了 InterSystems IRIS  Natural Language Processing(自然语言处理),并介绍了一些与索引文本数据相关的初始任务,以进行语义文本分析。完成这些任务后,您将对一组文本建立索引并执行分析,以确定这些文本中最常见的实体(entity)、关于这些实体的度量指标、实体之间的各种关联,以及查看实体在源文本的表现形式。这些活动仅设置使用默认设置和功能,以便您熟悉 NLP 文本分析的基础知识。有关Text Analytics(文本分析)的完整文档,请参阅InterSystems IRIS Natural Language Processing (NLP) Guide (《InterSystems IRIS 自然语言处理 (NLP) 指南》)

处理非结构化文本的一个相关但独立的工具是InterSystems IRIS SQL Search

0
0 167
文章 Hao Ma · 十一月 2, 2021 7m read

本文档解释了如何使用 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 技术概要》)。

0
0 299
文章 Louis Lu · 十一月 2, 2021 11m read

本文档向您介绍 InterSystems IRIS®数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。

本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件,激活该密钥文件,然后用它来加密一个数据库。这些活动被设计成只使用默认的设置和功能,这样您就可以熟悉该功能的基本原理,而不必处理那些离题的细节(尽管这些细节在执行实现时可能很重要)。有关数据库加密的完整文档,请参见 Encryption Guide(《加密指南》)

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。


  1. 为什么数据库加密很重要   

虽然加密并不能防止对机密或个人信息的所有不当或未经授权的使用或披露,但确保静止数据的加密为信息安全提供了一个重要的防御层。在数据库级别实施加密为您的信息保护控制提供了一个额外的维度。

此外,许多有关敏感信息或个人信息的法律和法规建议或要求处理数据的组织采用加密作为第一道防线。

0
0 494
文章 Louis Lu · 十一月 2, 2021 12m read

本文档向您介绍 InterSystems IRIS®数据平台对 SQL 文本搜索的支持,它为各种语言的非结构化文本数据提供语义上下文搜索。它涵盖了以下主题:


本文档介绍了 SQL 上下文感知文本搜索,并介绍了一些与索引文本数据相关的初始任务,以进行搜索和执行 SQL 搜索。一旦您完成了这个探索,您将在一个 SQL 列中为文本搜索建立索引,并执行几种类型的搜索。这些活动被设计为只使用默认设置和功能,以便您熟悉该功能的基本原理。有关 SQL 搜索的完整文档,请参见 SQL Search Guide(《SQL 搜索指南》)

处理非结构化文本的一个相关但独立的工具是自然语言处理(Natural Language ProcessingNLPSQL 搜索假定您知道要查找的内容。NLP 文本分析允许您在没有事先了解文本内容的情况下分析文本的内容

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。

0
0 172
文章 姚 鑫 · 十一月 2, 2021 5m read

第六十四章 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子句提供文字值; 它不能使用输入参数来提供字段名、字段别名、字段号或排序关键字。

0
0 111
文章 Louis Lu · 十一月 2, 2021 9m read

本文档介绍了 XEP APIcom.intersystems.xep),它提供了在 InterSystems IRIS®数据平台上极其快速的对Java 对象存储和检索的能力。文档概述了使用 XEP Java 对象持久化的方法,并引导您通过一个简单的场景来演示该API 的主要功能。

这些演示的内容、只使用默认设置和功能,这样您就可以熟悉 XEP 的基本原理,而不必处理超出本概述范围的细节问题。有关 XEP 的完整文档,请参见 Persisting Java Objects with InterSystems XEP《使用 InterSystems XEP 持久化 Java 对象》

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)


  1. 快速的 Java 对象存储和检索

Java 是一种面向对象的语言,因此对于 Java 应用程序来说,将数据建模为对象是很自然的。然而,当应用程序需要将数据存储在数据库中时,这可能会出现问题。如果您使用 JDBC 来存储和检索对象,您就面临着将对象数据转换为一组关系表,然后再将查询结果集转化为对象的问题。

0
0 179
文章 Nicky Zhu · 十一月 2, 2021 22m read

目录

技术概要:InterSystems 云管理器(Cloud Manager) 1

  1. ICM 能为您做什么? 1
  2. ICM 是如何工作的? 1
  3. 试一试!使用 ICM 在云中部署 InterSystems IRIS 2
    1. 安装 Docker 3
    2. 下载 ICM 映像 3
    3. 启动 ICM 3
    4. 获取云供应商帐户和证书 3
    5. 生成安全密钥 4
    6. 自定义示例配置文件 4
    7. 配置基础设施 9
    8. 部署 InterSystems IRIS 10
    9. 尝试 ICM 管理命令 11
    10. 取消配置基础设施 12
  4. ICM 能做的远不止这些! 13
  5. 了解有关 ICM 的更多信息 13

插图目录

图 1: ICM 让一切变得简单 2

图 2: 云供应商的 ICM 默认文件示例 8

图 3: 交互式 ICM 命令 11

技术概要:InterSystems 云管理器(Cloud Manager)

本文向您介绍了 InterSystems 云管理器(InterSystems Cloud Manager,ICM),这是基于 InterSystems IRIS®数据平台的应用程序的端到端云配置和部署解决方案。

作为本指南的一部分,您将使用 ICM 在公共云中配置基础设施,并在该基础设施上部署 InterSystems IRIS。

0
0 276
文章 Michael Lei · 十一月 2, 2021 3m read

作为一个12岁的书呆子,我最喜欢的书是斯蒂芬-皮尔写的《英雄失败之书》,这是一本关于人类不足之处的纪事。对我来说,这本书的亮点是佩德罗-卡罗莱纳的故事,一个努力开发葡语-英语短语手册的人。这是一项崇高的事业,但由于他缺乏说英语的能力,也没有一本葡英字典,因此受到阻碍。

然而,他确实拥有一本法英词典,一本葡法词典和一种真正能干的态度。他的劳动成果对葡萄牙度假者毫无益处,却让12岁的我笑得歇斯底里。我经常愉快地回忆起这个故事,但直到我开始工作时,我才开始把自己和卡洛琳娜先生进行比较。

我的工作是一名信息建模师。信息建模师的工作可以轻描淡写地概括为把现实变成可以存储在数据库中的东西。这是通过设计信息模型来完成的。在传统的软件设计中,有三种类型的信息模型。概念性、逻辑性和物理性。你从概念模型开始,它是对我们想要数字化的东西以及它们之间的关系的一个高级描述。然后你转到逻辑模型,描述这些对象如何在数据库中理想地创建。最后,你在物理模型中实现这一点,物理模型是由用户维护数据的数据库的实际实现。
 
"这是信息建模的传统智慧。但这种方法是否能实现目的有待商榷"。
 
这是信息建模的传统智慧。但这种方法是否能实现目的有待商榷。佩德罗的短语书的故事之所以有趣,是因为其方法明显不合适,而且客观上结果很差。这在语言学上相当于用叉子喝汤。但是,当主题比较模糊时,就很难推断方法是如何以及何时有缺陷的。

0
0 453
文章 姚 鑫 · 十一月 1, 2021 8m read

第六十三章 SQL命令 ORDER BY(一)

指定结果集中行排序的SELECT子句。

大纲

ORDER BY ordering-item [ASC | DESC]{,ordering-item [ASC | DESC] ...}

参数

  • ordering-item - 决定排序顺序的文字。 列名、列别名或列号。 ORDER BY子句可以包含单个排序项或以逗号分隔的排序项列表,以指定排序层次结构。
  • ASC DESC - 可选-按升序(ASC)或降序(DESC)排序。 默认为升序。

描述

ORDER BY子句根据指定列的数据值或以逗号分隔的列序列对查询结果集中的记录进行排序。 该语句对单个结果集进行操作,这些结果集要么来自SELECT语句,要么来自多个SELECT语句的UNION

ORDER BY按逻辑(内部存储)数据值对记录进行排序,而不考虑当前的选择模式设置。

ORDER BY子句是SELECT语句中的最后一个子句。 它出现在FROMWHEREGROUP BYHAVING子句之后。 以错误的顺序指定SELECT子句将产生SQLCODE -25错误。

如果SELECT语句没有指定ORDER BY子句,则返回的记录顺序是不可预测的。

如果SELECT语句指定了ORDER BYTOP子句,则作为“TOP”行的返回的记录将与ORDER BY子句中指定的顺序一致。

0
0 162
文章 姚 鑫 · 十月 31, 2021 2m read

第六十二章 SQL命令 OPEN

打开游标。

大纲

OPEN cursor-name

参数

  • cursor-name - 游标的名称,已经声明过了。 游标名称是在DECLARE语句中指定的。 游标名称区分大小写。

描述

OPEN语句根据游标的DECLARE语句中指定的参数打开游标。 一旦打开,就可以获取游标。 打开的游标必须关闭。

  • 试图打开未声明的游标会出现SQLCODE -52错误。
  • 试图打开已经打开的游标会导致SQLCODE -101错误。
  • 试图获取或关闭未打开的游标将导致SQLCODE -102错误。

成功的OPEN设置SQLCODE = 0,即使结果集是空的。

作为SQL语句,这只在嵌入式SQL中支持。 通过ODBC使用ODBC API支持等价的操作。

示例

下面的嵌入式SQL示例显示了一个正在打开和关闭的游标(名为EmpCursor):

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 !
0
0 182
文章 姚 鑫 · 十月 30, 2021 5m read

第六十一章 SQL命令 LOCK

锁表

大纲

LOCK [TABLE] tablename IN EXCLUSIVE MODE [WAIT seconds]

LOCK [TABLE] tablename IN SHARE MODE [WAIT seconds]

参数

  • tablename - 要锁定的表的名称。 Tablename必须是已经存在的表。 表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。 模式搜索路径被忽略。
  • IN EXCLUSIVE MODE / IN SHARE MODE - IN EXCLUSIVE MODE关键字短语创建一个常规的IRIS锁。 IN SHARE MODE关键字短语创建一个共享的IRIS锁。
  • WAIT seconds - 可选-一个整数,指定在超时前尝试获取锁的秒数。 如果省略,则应用系统默认超时时间。

描述

LOCKLOCK TABLE是同义词。

LOCK命令显式锁定SQL表。 此表必须是已存在的表,对其具有必要的特权。 如果tablename是一个不存在的表,LOCK会失败并出现编译错误。 如果tablename是临时表,则命令执行成功,但不执行任何操作。 如果tablename是视图,则命令失败,并出现SQLCODE -400错误。

UNLOCK命令用来反转LOCK操作。

0
0 208
文章 姚 鑫 · 十月 29, 2021 5m read

第六十章 SQL命令 JOIN(二)

单向外部联接

IRIS支持单向外部联接:左外部联接和右外部联接。

使用标准的“inner”联接时,当一个表的行链接到第二个表的行时,第一个表中找不到第二个表中对应行的行将从输出表中排除。

使用单向外联接时,即使第二个表中没有匹配项,第一个表中的所有行也会包括在输出表中。使用单向外连接,第一个表会从第二个表中取出相关信息,但不会因为第二个表中缺少匹配项而牺牲自己的行。

例如,如果查询首先列出Table1并创建一个左外部联接,那么它应该能够看到Table1中的所有行,即使它们在Table2中没有对应的记录。

在指定单向外联接时,在FROM子句中命名表的顺序非常重要。对于左外部联接,指定的第一个表是联接的源表。对于右外部联接,指定的第二个表是联接的源表。因此,%INORDER%STARTTABLE优化关键字不能与RIGHT OUTER JOIN一起使用。以下语法相互矛盾,导致SQLCODE-34错误:FROM%INORDER TABLE1 RIGHT OUTER JOIN TABLE2 ON....

外部联接语法

IRIS支持两种表示外连接的格式:

  1. ANSI标准语法:LEFT OUTER JOIN
0
0 111
文章 Jingwei Wang · 十月 28, 2021 32m read
目录

技术概要:InterSystems IRIS 和 UIMA

本技术概要(First Look)快速介绍了 InterSystems IRIS® 数据平台如何实施和补充非结构化信息管理架构 (UIMA)。在简要概述 UIMA 以及 InterSystems IRIS 如何对其进行补充之后,您将有机会通过基本的动手练习来在实际应用中了解 InterSystems IRIS。

0
0 247
文章 Jingwei Wang · 十月 28, 2021 23m read
目录

技术概要:InterSystems API 管理器

本文档将向您介绍InterSystems API管理器(InterSystems API Manager ,IAM),解释了它的工作原理,并让您开始在自己的实例上探索它的功能。

InterSystems API管理器是如何工作的?

InterSystems API管理器是 InterSystems IRIS®数据平台的一个组件,它允许您利用由 InterSystems IRIS 应用程序暴露或消费的微服务和 API。作为 InterSystems IRIS的 服务器和应用程序之间的 API 网关(gateway),API 管理器使您能够更有效地监视和控制服务器端 API 和客户端应用程序之间的调用流量。

0
0 277
文章 姚 鑫 · 十月 28, 2021 7m read

第五十九章 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子句。

0
0 122
文章 姚 鑫 · 十月 27, 2021 2m read

第五十八章 SQL命令 %INTRANSACTION

显示事务状态。

大纲

%INTRANSACTION
%INTRANS

参数

描述

%INTRANSACTION语句设置SQLCODE以指示事务状态:

  • 如果当前在事务中,则SQLCODE=0
  • 如果不在事务中,则SQLCODE=100

事务正在进行时,%INTRANSACTION返回SQLCODE=0。此事务可以是由START TRANSACTIONSAVEPOINT发起的SQL事务。它也可以是由TSTART发起的ObjectScript事务。

事务嵌套对%INTRANSACTION没有影响。SET TRANSACTION%INTRANSACTION没有影响。

还可以使用$TLEVEL确定事务状态。%INTRANSACTION仅指示事务是否正在进行。$TLEVEL指示事务是否正在进行以及当前的事务级别数。

示例

以下嵌入式SQL示例显示%INTRANSACTION如何设置SQLCODE

ClassMethod %INTRANSACTION()
{
	n SQLCODE
	&sql(%INTRANSACTION)
	w "Before %INTRANS SQLCODE=",SQLCODE," TL=",$TLEVEL,!
0
0 180
文章 Jeff Liu · 十月 27, 2021 6m read

技术概要:InterSystems IRIS Native API for Python

目录

技术概要: InterSystems IRIS Native API for Python 1

  1. InterSystems IRIS 存储结构简介 1
  2. 探索 IRIS Native for Python 1
    1. 用前须知 2
    2. 安装 Native API 包 2
    3. IRIS Native 应用程序 2
    4. 运行练习 3
    5. 确认管理门户(Management Portal)中的变更 3
  3. 了解有关 IRIS Native 的更多信息 3

技术概要: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 类方法。

0
0 311
文章 Jeff Liu · 十月 26, 2021 13m read

技术概要:LDAP 和 InterSystems 产品

目录

技术概要: LDAP 和 InterSystems 产品 1

  1. 设置 LDAP 身份验证 1
    1. 选择 InterSystems IRIS 实例 1
    2. 定义 LDAP 配置 1
    3. 选择新的 LDAP 域作为默认值 2
    4. 启用 LDAP 身份验证 2
    5. 为 LDAP 服务器安装安全证书 3
  2. 探索 LDAP 用户和组 4
    1. User1: 操作员 4
    2. User2: 管理者 5
    3. User3: 开发者 5
    4. 自动创建用户 6
  3. 了解有关 LDAP 和安全的更多信息 6

技术概要:LDAP 和 InterSystems 产品

InterSystems IRIS®数据平台可以与 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)服务器集成,从而可以无缝地使用这种流行技术对用户进行身份验证。通过 LDAP 提供授权也很容易。

当用户尝试登录 InterSystems IRIS 时,用户名和密码会被发送到 LDAP 服务器,以验证该用户是否存在。一旦用户的身份得到验证,LDAP 服务器就会向 InterSystems IRIS 发送关于用户属于哪些组的信息。

0
0 146
文章 Jeff Liu · 十月 26, 2021 21m read

本技术概要(First Look)通过重点概述和基本的实践示例,向您介绍在 InterSystems IRIS®数据平台上使用容器(Container)的基本原理。您将了解容器的目的、重要性和好处,以及 InterSystems 如何实现它们的具体细节。

有关 Docker 容器和 InterSystems IRIS 的完整文档,请参见 Running InterSystems Products in Containers(《在容器中运行 InterSystems 产品》),以及 InterSystems Cloud Manager GuideInterSystems 云管理器指南》) ICM OverviewICM 概述)章节。Learn More About InterSystems IRIS in Containers(了解容器中的 InterSystems IRIS 的更多信息)部分提供了到其他参考资料的链接。

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。




  1. 为什么是容器(Container)?
0
0 260
文章 姚 鑫 · 十月 26, 2021 8m read

第五十七章 SQL命令 INTO

一个SELECT子句,指定在宿主变量中存储选定的值。

大纲

INTO :hostvar1 [,:hostvar2]...

参数

  • :hostvar1 - 在宿主语言中声明的输出宿主变量。 当在INTO子句中指定时,变量名前面加冒号(:)。 主机变量可以是局部变量(非下标或下标)或对象属性。 可以将多个变量指定为逗号分隔的列表、单个下标数组变量或逗号分隔的列表和单个下标数组变量的组合。

描述

INTO子句和主机变量仅在嵌入式SQL中使用。它们不在动态SQL中使用。在动态SQL中,%SQL.Statement类为输出变量提供了类似的功能。在通过ODBCJDBC或动态SQL处理的SELECT查询中指定INTO子句会导致SQLCODE-422错误。

INTO子句可以在SELECTDECLAREFETCH语句中使用。INTO子句对于所有三个语句都是相同的;本页上的示例都引用SELECT语句。

INTO子句使用在SELECT-ITEM列表中检索(或计算)的值来设置相应的输出主机变量,从而使这些返回的数据值可用于ObjectScript。在SELECT中,可选INTO子句出现在SELECT-ITEM列表之后、FROM子句之前。

注意:编译嵌入式SQL时,输出主机变量将初始化为空字符串。这可以防止在执行时出现

0
0 143
公告 Michael Lei · 十月 26, 2021

InterSystems很高兴地宣布一个全新的开发者下载网站 提供InterSystems IRIS社区版和InterSystems IRIS for Health社区版的完整配套版本。  这些都是免费提供给应用开发者使用的。

 你可以选择直接从InterSystems开发者社区 直接 下载 InterSystems IRIS.

0
0 567
文章 姚 鑫 · 十月 25, 2021 7m read

第五十六章 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%NOINDEX%NOJOURN%NOLOCK%NOTRIGGER%PROFILE%PROFILE_ALL
  • table - 要对其执行插入操作的表或视图的名称。此参数可以是子查询。INTO关键字是可选的。
  • column - 可选-与提供的值列表顺序对应的列名或以逗号分隔的列名列表。
0
0 245
文章 姚 鑫 · 十月 24, 2021 4m read

第五十五章 SQL命令 INSERT(四)

嵌入式SQL和动态SQL示例

下面的嵌入式SQL示例创建一个新表SQLUser.MyKids。下面的示例使用INSERT用数据填充此表。在插入示例之后,提供了一个删除SQLUser.MyKids的示例。

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 
	}
}

下面的嵌入式SQL示例插入具有两个字段值的行(第三个字段KidPetName采用默认值)。

0
0 139
文章 姚 鑫 · 十月 23, 2021 12m read

第五十四章 SQL命令 INSERT(三)

SQLCODE错误

默认情况下,INSERT是要么全有要么全无的事件:要么完全插入行,要么根本不插入行。 IRIS返回一个状态变量SQLCODE,指示插入是成功还是失败。要将行插入到表中,插入操作必须满足所有表、字段名和字段值要求,如下所示。

表:

  • 该表必须已经存在。尝试插入到不存在的表会导致SQLCODE-30错误。
  • 不能将该表定义为READONLY。尝试编译引用ReadOnly表的插入会导致SQLCODE-115错误。请注意,此错误是在编译时发出的,而不是在执行时发出的。
  • 如果通过视图更新表,则不能将该视图定义为只读。尝试这样做会导致SQLCODE-35错误。如果视图基于分割表,则不能通过使用CHECK OPTION定义的视图进行插入。尝试这样做会导致SQLCODE-35,其中不允许基于带有CHECK选项条件的切片表的视图(sample.myview)使用%msg INSERT/UPDATE/DELETE
  • 必须具有适当的权限才能插入表

字段名称:

  • 该字段必须存在。尝试插入不存在的字段会导致SQLCODE-29错误。
  • 插入必须指定所有必填字段。尝试插入行而不为必填字段指定值会导致SQLCODE-108错误。
  • 插入不能包含重复的字段名称。尝试插入包含两个同名字段的行会导致SQLCODE-377错误。
0
0 246
公告 Claire Zheng · 十月 23, 2021

亲爱的开发者们,

是否准备参加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

0
0 176
文章 姚 鑫 · 十月 22, 2021 6m read

第五十三章 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.
0
0 147
文章 姚 鑫 · 十月 21, 2021 10m read

第五十二章 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%NOINDEX%NOJOURN%NOLOCK%NOTRIGGER%PROFILE%PROFILE_ALL
  • table - 要对其执行插入操作的表或视图的名称。此参数可以是子查询。INTO关键字是可选的。表名(或视图名)可以是限定的(schema.table
0
0 292