文章 姚 鑫 · 八月 6, 2021 阅读大约需 3 分钟 方法关键字PlaceAfter,Private,ProcedureBlock,PublicList 第六十九章 方法关键字 - PlaceAfter 指定此方法在为类生成的例程中相对于其他方法的顺序。 用法 要指定类编译器应该将此方法放在它为类创建的例程中列出的方法之后,请使用以下语法: Method name(formal_spec) As returnclass [ PlaceAfter = methodlist ] { //implementation } 其中methodlist是单个方法名或用逗号分隔的方法名列表,用括号括起来。 详解 此关键字指定类编译器应该将此方法放在它为类创建的例程中列出的方法之后。此关键字用于极少数需要控制类编译器为方法生成代码的顺序的情况。 默认 如果省略此关键字,类编译器将使用其正常逻辑来确定它生成的例程中方法的顺序。 第七十章 方法关键字 - Private 指定此方法是否为私有方法(只能由该类或其子类的方法调用)。 用法 要指定该方法为私有方法,请使用以下语法: #Caché 0 0 0 95
文章 TZ Zhuang · 八月 6, 2021 阅读大约需 2 分钟 FAQ 常见问题系列--系统管理篇 如何使用命令在Journal日志文件中搜索指定的Global 可以使用%SYS.Journal.File类中的ByTimeReverseOrder查询,以及%SYS.Journal.Record类中的List查询来实现。 下面是这两个查询的具体作用: A) %SYS.Journal.File类中的ByTimeReverseOrder查询这个查询会获取journal日志文件名并按降序排列 #ObjectScript #日志 #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 202
文章 姚 鑫 · 八月 5, 2021 阅读大约需 3 分钟 方法关键字GenerateAfter,Internal,Language,NotInheritable 第六十五章 方法关键字 - GenerateAfter 指定何时生成此方法。仅当方法是方法生成器时适用。 用法 要指定在生成其他方法后调用此方法的生成器,请使用以下语法: Method name(formal_spec) As returnclass [ CodeMode = ObjectGenerator, GenerateAfter = methodlist ] { //implementation } 其中methodlist是单个方法名或用逗号分隔的方法名列表,用括号括起来。 详解 在方法生成器方法的情况下,指定生成器应在生成列出的方法后调用。当需要控制方法生成器的调用顺序时,此关键字非常有用。 第六十六章 方法关键字 - Internal 指定此方法定义是否是内部的(不显示在类文档中)。 用法 要指定此方法是内部的,请使用以下语法: #Caché 0 0 0 119
文章 姚 鑫 · 八月 4, 2021 阅读大约需 2 分钟 方法关键字Deprecated,ExternalProcName,Final,ForceGenerate 第六十一章 方法关键字 - Deprecated 指定不推荐使用此方法。该关键字被类编译器忽略,只是提供了一个人类可读的指示符,表明该方法已被弃用。 用法 要指定不推荐使用此方法,请使用以下语法: Method name(formal_spec) As returnclass [ Deprecated ] { //implementation } 否则,省略此关键字或将单词Not放在关键字的前面。 第六十二章 方法关键字 - ExternalProcName 当此方法在外部数据库中用作存储过程时,指定其名称。仅当方法被投影为存储过程时适用。 若要在方法用作外部数据库中的存储过程时重写该方法的默认名称,请使用以下语法: #Caché 0 0 0 104
文章 姚 鑫 · 八月 3, 2021 阅读大约需 3 分钟 索引关键字Unique,Abstract,ClientName,CodeMode 第五十七章 索引关键字 - Unique 指定索引是否应强制唯一性。 用法 要指定IRIS应强制此索引所基于的属性具有唯一性,请使用以下语法: Index name On property_expression_list [ Unique ]; 否则,请省略此关键字或将该词放在该关键字之前。 详情 如果存在UNIQUE关键字,则表示这是唯一索引。 由唯一索引索引的属性(或多个属性)被约束为在定义索引的类(表)的范围(所有对象的集合)内具有唯一值(即,没有两个实例可以具有相同的排序值)。 唯一索引不能也是位图索引。 示例 Index SSNIdx On SSN [ Unique ] ; 默认 如果省略此关键字,IRIS不会强制此索引所基于的属性具有唯一性。 第五十八章 方法关键字 - Abstract 指定这是否是抽象方法。 #Caché 0 0 0 96
文章 姚 鑫 · 八月 2, 2021 阅读大约需 2 分钟 索引关键字PrimaryKey,ShardKey,SqlName,Type 第五十三章 索引关键字 - PrimaryKey 指定此索引是否定义表的主键。 用法 要指定该表的主键由该索引所基于的属性构成,请使用以下语法: Index name On property_expression_list [ PrimaryKey ]; 否则,省略此关键字或将单词Not放在关键字的前面。 详解 此关键字指定应通过SQL将此索引报告为此类(表)的主键。 PrimaryKey索引的行为也类似于唯一索引。 也就是说,对于在此索引中使用的属性(或属性组合),InterSystems IRIS强制唯一性。 在这个索引定义中,允许将Unique关键字指定为true,但这是多余的。 #Caché 0 0 0 103
文章 姚 鑫 · 八月 1, 2021 阅读大约需 3 分钟 索引关键字Data,Extent,IdKey,Internal 第四十九章 索引关键字 - Data 指定其值将存储在此索引中的属性列表。 用法 要在索引, 中存储属性值,请使用以下语法: Index name On property_expression_list [ Data = stored_property_list ]; 其中,stored_property_list 是单个属性名称或括号中以逗号分隔的属性 , 列表。 详解 此关键字指定属性列表,其值将存储在此索引中。 不能将此关键字与位图索引一起使用。 默认 如果省略此关键字,属性值将不会存储在索引中。 示例 Index NameIDX On Name [ Data = Name ]; Index ZipIDX On ZipCode [ Data = (City,State) ]; 第五十章 索引关键字 - Extent 定义范围索引。 #Caché 0 0 0 109
文章 姚 鑫 · 七月 31, 2021 阅读大约需 2 分钟 外键关键字SqlName,Abstract,Condition,CoshardWith 第四十五章 外键关键字 - SqlName 为外键指定一个SQL别名。 用法 要覆盖此外键的默认SQL名称,请使用以下语法: ForeignKey keyname(key_props) References pkg.class(ref_index) [ SqlName = alternate_name ]; 其中备用名是一个SQL标识符。 详解 此关键字允许在通过SQL引用时定义此外键的替代名称。 默认 如果省略此关键字,外键的SQL名称就是外键定义中指定的keyname。 第四十六章 索引关键字 - Abstract 指定索引是抽象的。 用法 要指定索引是抽象的,请使用以下语法: #Caché 0 0 0 80
文章 姚 鑫 · 七月 30, 2021 阅读大约需 3 分钟 外键关键字Internal,NoCheck,OnDelete,OnUpdate 第四十一章 外键关键字 - Internal 指定此外键定义是否为内部定义(不显示在类文档中)。 用法 要将此外键定义标记为内部,请使用以下语法: ForeignKey keyname(key_props) References pkg.class(ref_index) [ Internal ]; 否则,省略此关键字或将单词Not放在关键字的前面。 详解 内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。 默认 如果省略此关键字,此外键定义将显示在类文档中。 第四十二章 外键关键字 - NoCheck 指定是否应该检查这个外键约束。 用法 要防止检查该外键定义的约束,请使用以下语法: #Caché 0 0 0 94
文章 姚 鑫 · 七月 29, 2021 阅读大约需 4 分钟 类关键字SqlTableName,StorageStrategy,System,ViewQuery [toc] 第三十七章 类关键字 - SqlTableName 指定此类投影到的SQL表的名称。仅适用于持久类。 用法 要覆盖此类所投影到的SQL表的默认名称,请使用以下语法: Class MyApp.Person Extends %Persistent [ SqlTableName = DBTable ] { //class members } 其中DBTable是有效的SQL标识符。 详解 此关键字指定此类被投影到的SQL表的名称。默认情况下,SQL表名与类名相同。 通常,当类名是SQL保留字(并不少见)或希望SQL表包含类名不支持的字符(如“_”字符)时,可以使用此关键字。 对子类的影响 此关键字不是继承的。 默认 如果省略此关键字,类名将用作SQL表名。 [toc] #Caché 0 0 0 191
文章 姚 鑫 · 七月 28, 2021 阅读大约需 2 分钟 类关键字SoapBodyUse,SqlCategory,SqlRowIdName,SqlRowIdPrivate 第三十三章 类关键字 - SoapBodyUse 指定此类中定义的任何web method的编码。此关键字仅适用于web服务和web客户端类。 用法 要指定此类的web method的输入和输出所使用的编码,请使用以下语法: Class MyApp.MyClass [ SoapBodyUse = soapbodyuse ] { //class members } 其中soapbodyuse是下列之一: #Caché 0 0 0 77
文章 姚 鑫 · 七月 27, 2021 阅读大约需 5 分钟 类关键字PropertyClass,ServerOnly,Sharded,SoapBindingStyle 第二十九章 类关键字 - PropertyClass 向该类添加属性参数。 用法 要向该类添加属性参数,请使用以下语法: Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members } 其中·propertyclasslist·是下列之一: [ PropertyClass = PropClass.MyPropertyClass ] 用逗号分隔的类名列表,用括号括起来。 详情 如果需要添加自定义属性参数,请执行以下操作: #Caché 0 0 0 112
文章 Michael Lei · 七月 27, 2021 阅读大约需 8 分钟 示例:使用默认 REST API 查看 InterSystems IRIS 中的监控指标 以下步骤展示如何显示 /api/monitor 服务提供的指标列表示例。 在上个帖子中,我概述了以 Prometheus 格式显示 IRIS 指标的服务。 该贴介绍了如何在容器中设置和运行 IRIS 预览版 2019.4,然后列出了指标。 本帖假定您已安装 Docker。 如果未安装,现在就为您的平台安装吧 :) 步骤 1. 下载并运行 docker 形式的 IRIS 预览版 按照预览发行版的下载说明下载预览版许可证密钥和 IRIS Docker 映像。 例如,我选择了 InterSystems IRIS for Health 2019.4。 #API #InterSystems 业务解决方案和架构 #监视 #仪表板 #性能 #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 266
文章 姚 鑫 · 七月 26, 2021 阅读大约需 3 分钟 类关键字NoExtent,OdbcType,Owner,ProcedureBlock # <center> 第二十五章 类关键字 - NoExtent 指定是否阻止编译器为此类生成继承类(如果不这样做的话)。 # 用法 要防止编译器为此类生成继承类,请使用以下语法: ```Class MyApp.MyClass [ NoExtent ] { //class members }``` 否则,省略此关键字或将单词`Not`放在关键字的前面。 # 详解 如果该关键字为真,则该类没有 `extent`。不能创建此类的实例。通常,这样的类会扩展或覆盖从`%Library.Persistent`继承的标准持久接口。 # 对子类的影响 此关键字不是继承的。 # 默认 如果省略此关键字,类可以有一个`extent`。 # <center> 第二十六章 类关键字 - OdbcType 指定通过`ODBC`或`JDBC`公开此数据类型时使用的类型。每个数据类型类都必须指定一个`ODBC`类型。此关键字仅适用于数据类型类。 # 用法 #Caché 0 0 0 112
文章 姚 鑫 · 七月 25, 2021 阅读大约需 3 分钟 类关键字Hidden,Inheritance,Language,LegacyInstanceContext # <center> 第二十一章 类关键字 - Hidden 指定此类是否隐藏(未在类引用中列出)。 # 用法 要隐藏类,请使用以下语法: ```javaClass MyApp.Person [ Hidden ] { //class members }```否则,省略此关键字或将单词Not放在关键字的前面。 # 详解 如果一个类是隐藏的,当使用Visual Studio代码的对象脚本扩展时,它不会在类引用中列出,也不会在studio检查器的工作区窗口中列出,也不会在对象脚本资源管理器窗格中列出。(但是,如果在“打开”对话框中键入该类的名称,或者在使用VS Code - ObjectScript时将其保存到本地工作区,仍然可以在Studio中打开该类。) # 对子类的影响 此关键字不是继承的。 # 默认 如果省略此关键字,则该类不会被隐藏。 # <center> 第二十二章 类关键字 - Inheritance 指定此类的超类的继承顺序。 # 用法 #Caché 0 0 0 86
文章 姚 鑫 · 七月 24, 2021 阅读大约需 2 分钟 类关键字DependsOn,Deprecated,Final,GeneratedBy 第十七章 类关键字 - DependsOn 指定此类应在编译器使其他(指定的)类可运行后编译。 用法 要指示类编译器应该在其他类可运行后编译此类,请使用以下语法: Class MyApp.MyClass [ DependsOn = classlist ] { //class members } 其中classlist是下列之一: 类名 [ DependsOn = MyApp.Class1 ] 用逗号分隔的类名列表,用括号括起来。 [ DependsOn = (MyApp.Class1,MyApp.Class2,...) ] 详情 此关键字指定类编译器应该在使指定的类可运行后编译此类。 如果此类的编译使用方法生成器逻辑中的这些其他类,则此关键字非常有用。如果类包含调用其他类的初始表达式,这也很有用。 #Caché #Ensemble 0 0 0 89
文章 姚 鑫 · 七月 23, 2021 阅读大约需 3 分钟 类关键字ClientDataType,ClientName,CompileAfter,DdlAllowed # <center> 第十三章 类关键字 - ClientDataType 指定将此数据类型投影到客户端技术时使用的客户端数据类型。仅适用于数据类型类。 # 用法 要指定将此数据类型投影到客户端技术时要使用的客户端数据类型,请使用以下语法:```javaClass MyApp.MyString [ ClientDataType = clienttype ] { //class members }``` 其中clienttype是下列之一: #Caché 0 0 0 107
文章 姚 鑫 · 七月 22, 2021 阅读大约需 4 分钟 关键字触发器定义,扩展数据块,类关键字Abstract,ClassType 第九章 触发器定义 描述触发器定义的结构。 介绍 触发器是在SQL中发生特定事件时执行的代码段。InterSystems IRIS支持基于执行INSERT、UPDATE和DELETE命令的触发器。根据触发器定义,指定的代码将在相关命令执行之前或之后立即执行。每个事件可以有多个触发器,只要它们被分配了执行顺序。 可以向持久类添加触发器定义。它们在其他类中没有意义。 详情 触发器定义具有以下结构: #Caché 0 0 0 176
文章 Lele Yang · 七月 22, 2021 阅读大约需 6 分钟 FAQ 常见问题系列--Java 从IRIS数据库中读取Stream数据性能优化-Prefetch方式介绍 提示:本文包含在Java中通过JDBC Driver对Caché/IRIS数据库进行查询的示例代码。 近期有客户反应使用Java从老版本Caché中读取数据时,如果数据中包含long varchar, Caché数据库中与之对应的属性类型为%Stream.GlobalCharacter,即使实际上该流数据长度非常小,也会成十几倍的降低性能。 大家先来看一段代码, #Java #JDBC 0 3 0 213
文章 姚 鑫 · 七月 21, 2021 阅读大约需 5 分钟 关键字参数定义,映射定义,属性定义,查询定义 第五章 参数定义 描述参数定义的结构。 介绍 参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。 详解 参数定义具有以下结构: #Caché 0 0 0 114
文章 Claire Zheng · 七月 20, 2021 阅读大约需 1 分钟 扫码看回放 | InterSystems极客俱乐部线上直播课:Health Connect 系统运维培训 InterSystems极客俱乐部线上直播课“Health Connect系统运维培训”回放已准备好,欢迎您点击报名,扫码看回放! #活动 #其他 0 0 0 97
文章 姚 鑫 · 七月 20, 2021 阅读大约需 6 分钟 关键字类定义,外键定义,索引定义,方法定义 第一章 类定义 描述类定义的结构。 介绍 一个类可以包含熟悉的类元素,如属性、方法和参数(在其他类语言中称为常量)。它还可以包含通常不在类中定义的项,包括触发器、查询和索引。 详细 类定义具有以下结构: Import import_ppackage_list Include include_code IncludeGenerator include_generator_code /// description Class package.shortclassname Extends superclass_list [ class_keyword_list ] { Class_members } import_package_list(可选)指定类从中导入的任何包的名称。会影响编译器解析短类名的方式。 如果指定了此选项,则它可以是单个包的名称,也可以是多个包的逗号分隔列表,用括号括起来。 #Caché 0 0 0 109
文章 姚 鑫 · 七月 18, 2021 阅读大约需 4 分钟 第七章 将文件内容复制到另外文件 第七章 将文件内容复制到另外文件 示例 本例显示了一个使用本文前面介绍的几个%Library.File方法的样例类。 在示例类Demo.FileDemo中,ProcessFile()方法接受输入文件和输出文件,并调用SetUpInputFile()和SetUpOutputFile()打开文件,一个用于读取,另一个用于写入。然后,它逐行读取输入文件,并调用ProcessLine()对每行的内容执行一个或多个替换,将每行的新内容写入输出文件。 #Caché 0 0 0 151
文章 姚 鑫 · 七月 17, 2021 阅读大约需 4 分钟 第六章 使用%File对象 第六章 使用%File对象 如果想要操作文件本身,需要使用%Library.File的%New()方法实例化%File对象。该类还提供了允许使用该文件的实例方法。 注意:本节提供了几个使用%File对象的示例,以供说明。 对于简单的文件读写,使用%Stream.FileCharacter和%Stream.FileBinary。因为它们提供了额外的功能,例如,以正确的模式自动打开文件。 创建%File对象的实例 要使用文件,需要使用%New()方法实例化表示该文件的%File对象。该文件可能已经存在,也可能不存在于磁盘上。 以下示例在默认目录中为文件export.xml实例化一个%File对象。 #Caché 0 0 0 178
文章 姚 鑫 · 七月 16, 2021 阅读大约需 4 分钟 第五章 使用文件 第五章 使用文件 使用文件 %Library.File类提供了几个类方法,允许对文件执行各种操作。 复制文件 若要复制文件,请使用CopyFile()方法,该方法返回一个布尔值来指示成功或失败。 此方法采用四个参数: 1. from 从—指定源文件的名称。 2. to至—指定目标文件的名称。 3. pDeleteBeforeCopy —指定在执行复制之前是否删除目标文件(如果存在)。默认值为0。 4. return 返回—输出参数。如果为负,则包含操作系统返回的错误代码,以防方法失败 下面的第一个示例将目录e:\temp中的文件old.txt复制到new.txt。第二个示例将相同的文件复制到默认目录中的new.txt。 #Caché 0 0 0 121
文章 姚 鑫 · 七月 15, 2021 阅读大约需 4 分钟 第四章 使用目录 第四章 使用目录 使用目录 %Library。File类提供了几个类方法,允许对目录执行各种操作。 创建目录 若要创建目录,请使用CreateDirectory()方法,该方法返回一个布尔值来指示成功或失败。这个方法需要两个参数。第一个参数是要创建的目录的名称。第二个参数是输出参数。如果为负,它包含操作系统返回的错误代码,以防方法失败。 如果e:\temp已经存在,以下命令将失败,并显示Windows系统错误代码183,这意味着“当文件已经存在时,无法创建该文件。” #Caché 0 0 0 122
文章 姚 鑫 · 七月 14, 2021 阅读大约需 5 分钟 第三章 处理文件和目录名 第三章 处理文件和目录名 %Library.File类提供了几个可用于处理文件名和目录名的类方法。在大多数情况下,文件和目录不需要存在即可使用这些方法。 获取文件名和目录名 %Library.File类提供可用于获取部分文件名和目录名的类方法。 在给定完整路径名的情况下,使用GetDirectory()和GetFilename()分别获取目录和短文件名。对于此方法,不允许使用部分目录名。 DHC-APP>set filename = "e:\temp\config.txt" DHC-APP>write ##class(%File).GetDirectory(filename) E:\temp\ DHC-APP>write ##class(%File).GetFilename(filename) config.txt 在给定文件名的情况下,使用CanonicalFilename()从根目录获取完整路径: #Caché 0 0 0 110
文章 姚 鑫 · 七月 13, 2021 阅读大约需 6 分钟 第二章 使用文件和目录属性和属性 第二章 使用文件和目录属性和属性 %Library.File类还提供了许多类方法,可以使用这些方法来获取有关文件和目录的信息,或者查看或设置它们的属性和属性。 检查文件和目录是否存在 要确定给定文件是否存在,请使用Existes()方法并指定文件名作为参数。例如: DHC-APP>write ##class(%File).Exists("e:\temp\") 1 同样,要找出给定目录是否存在,请使用DirectoryExists()方法,并将该目录指定为参数。例如: DHC-APP>write ##class(%File).DirectoryExists("e:\temp") 1 如前所述,这些方法在Unix上将文件或目录名视为区分大小写,但在Windows上不区分大小写。此外,如果指定部分文件名或目录名,则该方法引用的文件或目录相对于包含正在使用的命名空间的默认全局数据库的目录。例如: #Caché 0 1 0 143
文章 Lele Yang · 七月 13, 2021 阅读大约需 2 分钟 FAQ 常见问题系列--互操作篇 使用SQL Outbound Adapter调用Oracle存储过程获取CLOB的正确方式 近日遇到客户反映在Business Operation中使用SQL Outbound Adapter调用Oracle存储过程时,无法获取CLOB完整的返回内容。借此在这里介绍下该如何调用,话不多说,直接上代码。 注意,以下代码片段直接应用于Business Operation中, #SQL 0 1 0 181
文章 Lele Yang · 七月 13, 2021 阅读大约需 6 分钟 FAQ 常见问题系列--系统管理篇 如何在Linux上配置InterSystems IRIS服务随机自启动? 与Windows上默认安装为服务随机自启动不同,我们在Linux上安装完InterSystems IRIS后,默认是没有配置系统服务的,需要做手动配置。本文提供使用systemd方式来配置InterSystems IRIS服务随机自启动的简单示例,供大家参考。 假设我们已经安装了InterSystems IRIS产品,安装完成后您可以通过iris list来来查看实例信息,包括安装路径,如:"/intersystems/iris" #Red Hat Enterprise Linux (RHEL) 0 0 0 219