文章
姚 鑫 · 三月 13 阅读大约需 9 分钟
第九章 SQL查询数据库(二)

第九章 SQL查询数据库(二)

调用用户定义函数的查询

InterSystems SQL允许您在SQL查询中调用类方法。这为扩展SQL语法提供了强大的机制。

若要创建用户定义的函数,请在持久性InterSystems IRIS类中定义一个类方法。该方法必须具有文字(非对象)返回值。这必须是一个类方法,因为在SQL查询中将没有对象实例可以在其上调用实例方法。还必须将其定义为SQL存储过程。

例如,我们可以在MyApp.Person类中定义一个Cube()方法:

00
0 0 51
文章
姚 鑫 · 三月 27 阅读大约需 11 分钟
第十三章 使用动态SQL(五)

第十三章 使用动态SQL(五)

从结果集中返回特定的值

要从查询结果集中返回特定的值,必须一次一行遍历结果集。
要遍历结果集,请使用%Next()实例方法。
(对于单一值,结果对象中没有行,因此%Next()返回0,而不是错误。)
然后,可以使用%Print()方法显示整个当前行的结果,或者检索当前行的指定列的值。

%Next()方法获取查询结果中下一行的数据,并将该数据放入结果集对象的data属性中。
%Next()返回1,表示它位于查询结果中的某一行上。
%Next()返回0,表示它位于最后一行(结果集的末尾)之后。
每次调用%Next()返回1个增量%ROWCOUNT;
如果游标定位在最后一行之后(%Next()返回0),%ROWCOUNT表示结果集中的行数。

00
0 1 48
文章
姚 鑫 · 四月 20 阅读大约需 13 分钟
第四章 缓存查询(一)

第四章 缓存查询(一)

系统自动维护已准备好的SQL语句(“查询”)的缓存。这允许重新执行SQL查询,而无需重复优化查询和开发查询计划的开销。缓存查询是在准备某些SQL语句时创建的。准备查询发生在运行时,而不是在编译包含SQL查询代码的例程时。通常,PREPARE紧跟在SQL语句的第一次执行之后,但在动态SQL中,可以准备查询而不执行它。后续执行会忽略PREPARE语句,转而访问缓存的查询。要强制对现有查询进行新的准备,必须清除缓存的查询。

所有SQL调用都会创建缓存查询,无论是在ObjectScript例程中调用还是在类方法中调用。
- 动态SQL、ODBC、JDBC和$SYSTEM.SQL.DDLImport()方法在准备查询时创建缓存查询。管理门户执行SQL接口、InterSystems SQL Shell和%SYSTEM.SQL.Execute()方法使用动态SQL,因此使用准备操作来创建缓存查询。

00
1 0 17
文章
姚 鑫 · 四月 24 阅读大约需 12 分钟
第五章 优化查询性能(三)

第五章 优化查询性能(三)

查询执行计划

可以使用解释或显示计划工具来显示SELECTDECLAREUPDATEDELETETRUNCATE TABLE和一些INSERT操作的执行计划。这些操作统称为查询操作,因为它们使用SELECT查询作为其执行的一部分。InterSystems IRIS在准备查询操作时生成执行计划;不必实际执行查询来生成执行计划。

默认情况下,这些工具显示InterSystems IRIS认为的最佳查询计划。对于大多数查询,有多个可能的查询计划。除了InterSystems IRIS认为最佳的查询计划外,还可以生成和显示备用查询执行计划。

00
0 0 15

嗨,社区!

请分享您在生产环境上进行代码部署的经验。您是否在生产系统中编译ObjectScript?可以吗

还是仅在测试环境上编译并将cache.dat复制到生产环境?

 

Deployment Strategies: Do You Compile ObjectScript on a Production Site?

Hi, Community!

Please share your experience on code deployment on production site. Do you compile ObjectScript on Production? Is it OK? 

Or you only compile on Test site and copy cache.dat to a Production?

00
0 0 17
文章
姚 鑫 · 五月 10 阅读大约需 5 分钟
第四章 多维存储的SQL和对象使用(二)

第四章 多维存储的SQL和对象使用(二)

索引

持久化类可以定义一个或多个索引;其他数据结构用于提高操作(如排序或条件搜索)的效率。InterSystems SQL在执行查询时使用这些索引。InterSystems IRIS对象和SQL在执行INSERTUPDATEDELETE操作时自动维护索引内的正确值。

标准索引的存储结构

标准索引将一个或多个属性值的有序集与包含属性的对象的对象ID值相关联。

例如,假设我们定义了一个简单的持久化MyApp.Person类,该类具有两个文本属性和一个关于其Name属性的索引:

00
0 0 8
文章
姚 鑫 · 五月 25 阅读大约需 7 分钟
第六章 从POP3服务器提取电子邮件

第六章 从POP3服务器提取电子邮件

从POP3服务器提取电子邮件

与POP3服务器通信

如果拥有所需的权限,并且邮件服务器正在运行,则可以使用POP3协议从该服务器下载和处理电子邮件。通常,要与POP3服务器通信,请登录,执行一系列影响邮箱的操作,然后提交或回滚任何更改。要在系统间IRIS中执行此操作,请执行以下操作:

00
0 0 30

注(2019 年 6 月):许多内容发生了变化,最新的详细信息请参见此处
注(2018 年 9 月):自本帖首次发布以来,内容已经有了很大改动,我建议使用 Docker 容器版本,以容器形式运行的项目以及详细信息仍然在 GitHub 的同一个地址发布,您可以下载、运行并根据需要进行修改。

00
0 0 25
文章
姚 鑫 · 六月 16 阅读大约需 7 分钟
第九章 将XML导入到对象中

第九章 将XML导入到对象中

本章介绍如何使用%XML.Reader将XML文档导入到 IRIS对象中。

注意:使用的任何XML文档的XML声明都应该指明该文档的字符编码,并且文档应该按照声明的方式进行编码。如果未声明字符编码, IRIS将使用前面的“输入和输出的字符编码”中描述的默认值。如果这些默认值不正确,请修改XML声明,使其指定实际使用的字符集。

还可以使用%XML.Reader读取任意XML文档并返回DOM(文档对象模型)。

创建XML读取器概述

IRIS提供了一些工具,用于读取XML文档并创建与该文档的元素相对应的启用XML的 IRIS对象的一个或多个实例。基本要求如下:

  • 该对象的类定义必须扩展%XML.Adaptor。除了少数例外,该对象引用的类还必须扩展%XML.Adaptor

提示:如果相应的XML模式可用,可以使用它来生成类(以及任何支持的类)。

00
0 0 24
文章
姚 鑫 · 六月 28 阅读大约需 6 分钟
第二十一章 使用%XML.TextReader 导航文档

第二十一章 使用%XML.TextReader 导航文档

导航文档

要在文档中导航,请使用文本阅读器的以下方法:Read()ReadStartElement()MoveToAttributeIndex()MoveToAttributeName()MoveToElement()MoveToContent()Rewind()

导航到下一个节点

要移动到文档中的下一个节点,请使用read()方法。Read()方法返回TRUE值,直到没有更多节点可读为止(即,直到到达文档末尾)。前面的示例在如下所示的循环中使用了此方法:

00
0 0 12

问题:

1、EnableVSSBackup这个参数在哪里设置?

2、Cache是否有自己的writer,如果有,怎样查到,叫什么名?

3、实现Cache的全量增量备份,使用VSS是否是最佳实践?

4、是否有Cache全量增量备份的实践案例,以供参考?

————————————————————————————————————————————————————————————————————————————————

我参考这篇官方文档,在启动应用时EnableVSSBackup会默认设置为1,但是我在配置或者应用界面中并没有看到这参数。

00
0 1 21
文章
姚 鑫 · 八月 2 阅读大约需 2 分钟
索引关键字PrimaryKey,ShardKey,SqlName,Type

第五十三章 索引关键字 - PrimaryKey

指定此索引是否定义表的主键。

用法

要指定该表的主键由该索引所基于的属性构成,请使用以下语法:

Index name On property_expression_list [ PrimaryKey ];

否则,省略此关键字或将单词Not放在关键字的前面。

详解

此关键字指定应通过SQL将此索引报告为此类(表)的主键。

PrimaryKey索引的行为也类似于唯一索引。
也就是说,对于在此索引中使用的属性(或属性组合),InterSystems IRIS强制唯一性。
在这个索引定义中,允许将Unique关键字指定为true,但这是多余的。

00
0 0 18

第0讲 前言

自我介绍

大家好,我简单的自我介绍一下,我是姚鑫,

为什么开这次的课程

首先Caché,M这门技术相对比较冷门,资料方面都是英文,没有系统的相关资料,记得刚入职时学习的东西都是很基础的,稍微有一些复杂的结构变化,就不知道如何下手。之后,群里的小伙伴总有人问我,希望我出一个系统的Caché视频,这件事我也酝酿了很久,目的就是帮助到更多的同学,让每个小伙伴在日后的工作学习中能更加的得心应手。遇到困难或问题时,大家可以随时在群里咨询,群里的氛围很和谐,有很多热心的大佬,不会说有那种自己觉得简单的问题,不好意思问,没人回答的情况。只要你觉得是个问题就可以发出来。

因为这段时间比较忙,准备的比较仓促,可能有一些内容会有遗漏,大家有啥想法可以群里留言,会后可以答疑,大家可以提出来,一起探讨一下,后续的会准备的更加充分一些。

00
0 0 13
文章
姚 鑫 · 十月 27 阅读大约需 2 分钟
第五十八章 SQL命令 %INTRANSACTION

第五十八章 SQL命令 %INTRANSACTION

显示事务状态。

大纲

%INTRANSACTION
%INTRANS

参数

描述

%INTRANSACTION语句设置SQLCODE以指示事务状态:
- 如果当前在事务中,则SQLCODE=0
- 如果不在事务中,则SQLCODE=100

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

00
0 0 6
文章
姚 鑫 · 十一月 11 阅读大约需 8 分钟
第七十三章 SQL命令 SET OPTION

第七十三章 SQL命令 SET OPTION

设置执行选项。

大纲

SET OPTION option_keyword = value

描述

SET OPTION语句用于设置执行选项,如编译模式、SQL配置设置和控制日期、时间和数字约定的区域设置。
每个set option语句只能设置一个关键字选项。

SET OPTION支持以下选项:

00
0 0 4
文章
姚 鑫 · 十一月 26 阅读大约需 2 分钟
第八十八章 SQL命令 WHERE(一)

第八十八章 SQL命令 WHERE(一)

指定一个或多个限制性条件的SELECT子句。

大纲

SELECT fields
FROM table
WHERE condition-expression

参数

  • condition-expression - 由一个或多个布尔谓词组成的表达式,该谓词控制要检索的数据值。

描述

可选的WHERE子句可以用于以下目的:

00
0 0 4
文章
Hao Ma · 一月 15 阅读大约需 2 分钟
npm-iris概览

什么是npm-iris? 

NPM是“No Project Mess(项目不乱)”的缩写。 

NPM是使用Intersystems IRIS和Bootstrp 4建成的项目和任务管理应用程序。 

NPM的创建初衷是通过一个简单直观的项目和任务管理软件,帮助开发者和小型商业公司降低日常问题的复杂度。 

它能提供不同的任务视图,包括电子表格、看板、日历,甚至甘特图! 

00
0 0 23
文章
姚 鑫 · 二月 11 阅读大约需 1 分钟
第三十一章 Caché 变量大全 $ZIO 变量

第三十一章 Caché 变量大全 $ZIO 变量

包含有关当前终端I / O设备的信息。

$ZIO
$ZI

描述

$ZIO包含有关当前I / O设备的信息。

对于作为终端的终端设备,$ZIO包含字符串TRM:。如果当前终端设备是远程连接的,则$ZIO包含有关远程连接的信息。

对于通过TELNET连接的终端设备,$ZIO包含以下内容:host | port

00
0 0 21