文章
姚 鑫 · 18 小时 前 阅读大约需 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

定义范围索引。

00
0 0 5
文章
姚 鑫 · 七月 31 阅读大约需 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

指定索引是抽象的。

用法

要指定索引是抽象的,请使用以下语法:

00
0 0 4
文章
姚 鑫 · 七月 30 阅读大约需 3 分钟
外键关键字Internal,NoCheck,OnDelete,OnUpdate

第四十一章 外键关键字 - Internal

指定此外键定义是否为内部定义(不显示在类文档中)。

用法

要将此外键定义标记为内部,请使用以下语法:

ForeignKey keyname(key_props) References pkg.class(ref_index) [ Internal ];

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

详解

内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。

默认

如果省略此关键字,此外键定义将显示在类文档中。

第四十二章 外键关键字 - NoCheck

指定是否应该检查这个外键约束。

用法

要防止检查该外键定义的约束,请使用以下语法:

00
0 0 5
文章
姚 鑫 · 七月 29 阅读大约需 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]

00
0 0 3

第三十三章 类关键字 - SoapBodyUse

指定此类中定义的任何web method的编码。此关键字仅适用于web服务web客户端类。

用法

要指定此类的web method的输入和输出所使用的编码,请使用以下语法:

Class MyApp.MyClass [ SoapBodyUse = soapbodyuse ]  { //class members }

其中soapbodyuse是下列之一:

00
0 0 5

第二十九章 类关键字 - PropertyClass

向该类添加属性参数。

用法

要向该类添加属性参数,请使用以下语法:

Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members }

其中·propertyclasslist·是下列之一:

[ PropertyClass = PropClass.MyPropertyClass ]
  • 用逗号分隔的类名列表,用括号括起来。

详情

如果需要添加自定义属性参数,请执行以下操作:

00
0 0 5
文章
姚 鑫 · 七月 26 阅读大约需 3 分钟
类关键字NoExtent,OdbcType,Owner,ProcedureBlock

 

# <center> 第二十五章 类关键字 - NoExtent

指定是否阻止编译器为此类生成继承类(如果不这样做的话)。

# 用法

要防止编译器为此类生成继承类,请使用以下语法:

```
Class MyApp.MyClass [ NoExtent ]  { //class members }
```

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

# 详解

如果该关键字为真,则该类没有 `extent`。不能创建此类的实例。通常,这样的类会扩展或覆盖从`%Library.Persistent`继承的标准持久接口。

# 对子类的影响

此关键字不是继承的。

# 默认

如果省略此关键字,类可以有一个`extent`。

 

# <center> 第二十六章 类关键字 - OdbcType

指定通过`ODBC`或`JDBC`公开此数据类型时使用的类型。每个数据类型类都必须指定一个`ODBC`类型。此关键字仅适用于数据类型类。

# 用法

00
0 0 8

 

# <center> 第二十一章 类关键字 - Hidden

指定此类是否隐藏(未在类引用中列出)。

# 用法

要隐藏类,请使用以下语法:

```java
Class MyApp.Person [ Hidden ]  { //class members }
```
否则,省略此关键字或将单词Not放在关键字的前面。

# 详解

如果一个类是隐藏的,当使用Visual Studio代码的对象脚本扩展时,它不会在类引用中列出,也不会在studio检查器的工作区窗口中列出,也不会在对象脚本资源管理器窗格中列出。(但是,如果在“打开”对话框中键入该类的名称,或者在使用VS Code - ObjectScript时将其保存到本地工作区,仍然可以在Studio中打开该类。)

# 对子类的影响

此关键字不是继承的。

# 默认

如果省略此关键字,则该类不会被隐藏。

 

 

# <center> 第二十二章 类关键字 - Inheritance

指定此类的超类的继承顺序。

# 用法

00
0 0 8
文章
姚 鑫 · 七月 24 阅读大约需 2 分钟
类关键字DependsOn,Deprecated,Final,GeneratedBy

第十七章 类关键字 - DependsOn

指定此类应在编译器使其他(指定的)类可运行后编译。

用法

要指示类编译器应该在其他类可运行后编译此类,请使用以下语法:

Class MyApp.MyClass [ DependsOn = classlist ]  
{ //class members }

其中classlist是下列之一:

  • 类名
[ DependsOn = MyApp.Class1 ]
  • 用逗号分隔的类名列表,用括号括起来。
[ DependsOn = (MyApp.Class1,MyApp.Class2,...) ]

详情

此关键字指定类编译器应该在使指定的类可运行后编译此类。

如果此类的编译使用方法生成器逻辑中的这些其他类,则此关键字非常有用。如果类包含调用其他类的初始表达式,这也很有用。

00
0 0 9

 

# <center> 第十三章 类关键字 - ClientDataType

指定将此数据类型投影到客户端技术时使用的客户端数据类型。仅适用于数据类型类。

# 用法

要指定将此数据类型投影到客户端技术时要使用的客户端数据类型,请使用以下语法:
```java
Class MyApp.MyString [ ClientDataType = clienttype ]  
{ //class members }
```

其中clienttype是下列之一:

00
0 0 9

第九章 触发器定义

描述触发器定义的结构。

介绍

触发器是在SQL中发生特定事件时执行的代码段。InterSystems IRIS支持基于执行INSERTUPDATEDELETE命令的触发器。根据触发器定义,指定的代码将在相关命令执行之前或之后立即执行。每个事件可以有多个触发器,只要它们被分配了执行顺序。

可以向持久类添加触发器定义。它们在其他类中没有意义。

详情

触发器定义具有以下结构:

00
0 0 14

第五章 参数定义

描述参数定义的结构。

介绍

参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。

详解

参数定义具有以下结构:

00
0 0 8
文章
姚 鑫 · 七月 20 阅读大约需 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(可选)指定类从中导入的任何包的名称。会影响编译器解析短类名的方式。

如果指定了此选项,则它可以是单个包的名称,也可以是多个包的逗号分隔列表,用括号括起来。

00
0 0 7
文章
姚 鑫 · 七月 18 阅读大约需 4 分钟
第七章 将文件内容复制到另外文件

第七章 将文件内容复制到另外文件

示例

本例显示了一个使用本文前面介绍的几个%Library.File方法的样例类。

在示例类Demo.FileDemo中,ProcessFile()方法接受输入文件和输出文件,并调用SetUpInputFile()SetUpOutputFile()打开文件,一个用于读取,另一个用于写入。然后,它逐行读取输入文件,并调用ProcessLine()对每行的内容执行一个或多个替换,将每行的新内容写入输出文件。

00
0 0 15
文章
姚 鑫 · 七月 17 阅读大约需 4 分钟
第六章 使用%File对象

第六章 使用%File对象

如果想要操作文件本身,需要使用%Library.File%New()方法实例化%File对象。该类还提供了允许使用该文件的实例方法。

注意:本节提供了几个使用%File对象的示例,以供说明。

对于简单的文件读写,使用%Stream.FileCharacter和%Stream.FileBinary。因为它们提供了额外的功能,例如,以正确的模式自动打开文件。

创建%File对象的实例

要使用文件,需要使用%New()方法实例化表示该文件的%File对象。该文件可能已经存在,也可能不存在于磁盘上。

以下示例在默认目录中为文件export.xml实例化一个%File对象。

00
0 0 16
文章
姚 鑫 · 七月 16 阅读大约需 4 分钟
第五章 使用文件

第五章 使用文件

使用文件

%Library.File类提供了几个类方法,允许对文件执行各种操作。

复制文件

若要复制文件,请使用CopyFile()方法,该方法返回一个布尔值来指示成功或失败。

此方法采用四个参数:
1. from 从—指定源文件的名称。
2. to至—指定目标文件的名称。
3. pDeleteBeforeCopy —指定在执行复制之前是否删除目标文件(如果存在)。默认值为0。
4. return 返回—输出参数。如果为负,则包含操作系统返回的错误代码,以防方法失败

下面的第一个示例将目录e:\temp中的文件old.txt复制到new.txt。第二个示例将相同的文件复制到默认目录中的new.txt

00
0 0 7
文章
姚 鑫 · 七月 15 阅读大约需 4 分钟
第四章 使用目录

第四章 使用目录

使用目录

%Library。File类提供了几个类方法,允许对目录执行各种操作。

创建目录

若要创建目录,请使用CreateDirectory()方法,该方法返回一个布尔值来指示成功或失败。这个方法需要两个参数。第一个参数是要创建的目录的名称。第二个参数是输出参数。如果为负,它包含操作系统返回的错误代码,以防方法失败。

如果e:\temp已经存在,以下命令将失败,并显示Windows系统错误代码183,这意味着“当文件已经存在时,无法创建该文件。”

00
0 0 8
文章
姚 鑫 · 七月 14 阅读大约需 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()从根目录获取完整路径:

00
0 0 7
文章
姚 鑫 · 七月 13 阅读大约需 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上不区分大小写。此外,如果指定部分文件名或目录名,则该方法引用的文件或目录相对于包含正在使用的命名空间的默认全局数据库的目录。例如:

00
0 1 14
文章
姚 鑫 · 七月 12 阅读大约需 5 分钟
第一章 查询目录和驱动器

第一章 查询目录和驱动器

%Library.File(简称%File)为处理文件和目录提供了广泛的API。本文将介绍该API的主要功能。有关属性、方法和查询的规范列表,请参见类参考。

注意:如果指定了部分文件名或目录名,这些方法中的大多数都引用的项相对于包含正在使用的命名空间的默认全局数据库的目录。该目录在本文中称为“默认目录”。这条规则的任何例外都在文章中注明。

此外,仅当基础操作系统将文件名和目录名视为区分大小写时,这些方法才会将文件名或目录名视为区分大小写。也就是说,文件或目录名在Unix上区分大小写,但在Windows上不区分大小写。

00
0 0 10
文章
姚 鑫 · 七月 9 阅读大约需 6 分钟
第三十二章 XML基础知识概念

第三十二章 XML基础知识概念

attribute

以下形式的名值对:

ID="QD5690"

属性位于元素中,如下所示,一个元素可以有任意数量的属性。

<Patient ID="QD5690">Cromley,Marcia N.</Patient>

CDATA区域

表示不应该验证的文本,如下所示:

00
0 0 10
文章
姚 鑫 · 七月 8 阅读大约需 2 分钟
第三十一章 检查命名空间和类

第三十一章 检查命名空间和类

%XML.Namespaces提供了两个类方法,可用于检查XML命名空间及其包含的类:

GetNextClass()

classmethod GetNextClass(namespace As %String, 
            class As %String) as %String

返回给定XML命名空间中给定类之后的下一个类(按字母顺序)。当没有更多的类时,此方法返回NULL

GetNextNamespace()

classmethod GetNextNamespace(namespace As %String) as %String

返回给定命名空间之后的下一个命名空间(按字母顺序)。当没有更多的命名空间时,此方法返回NULL

在这两种情况下,只考虑当前的InterSystems IRIS命名空间。此外,映射的类也会被忽略。

00
0 0 9
文章
姚 鑫 · 七月 7 阅读大约需 5 分钟
第三十章 从类生成XML架构

第三十章 从类生成XML架构

本章介绍如何使用%XML.Schema从启用了XML的类生成XML架构。

概述

要生成为同一XML命名空间中的多个类定义类型的完整架构,请使用%XML.Schema构建架构,然后使用%XML.Writer为其生成输出。

从多个类构建架构

要构建XML架构,请执行以下操作:

  1. 创建%XML.Schema实例。
  2. 可以选择设置实例的属性:

- 若要为任何其他未分配的类型指定命名空间,请指定DefaultNamespace属性。默认值为NULL
- 默认情况下,类及其属性的类文档包含在模式的<annotation>元素中。
要禁用此功能,请将IncludeDocumentation属性指定为0。

注意:必须在调用AddSchemaType()方法之前设置这些属性。

00
0 0 10
文章
姚 鑫 · 七月 6 阅读大约需 9 分钟
第二十九章 从XML架构生成类

第二十九章 从XML架构生成类

Studio提供了一个向导,该向导读取XML模式(从文件或URL),并生成一组支持XML的类,这些类对应于模式中定义的类型。
所有的类都扩展%XML.Adaptor
指定一个包来包含类,以及控制类定义细节的各种选项。

向导还可以作为类方法使用,也可以使用该类方法。
在内部,SOAP向导在读取WSDL文档并生成web客户端或web服务时使用此方法;

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

使用向导

要使用XML架构向导,请执行以下操作:

  1. 选择 Tools > Add-Ins > XML Schema Wizard.

image

00
0 0 9