文章
· 八月 30, 2021 阅读大约需 12 分钟
Caché百讲,前言,Caché 简介,初识M程序,语法规则

第0讲 前言

自我介绍

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

为什么开这次的课程

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

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

0 0
0 159

第153章 Storage关键字 - SqlRowIdProperty

指定SQL RowId属性。

大纲

<SqlRowIdProperty>prop</SqlRowIdProperty>

该元素的值是一个SQL标识符。

描述

此元素仅由从早期InterSystems产品迁移的类使用。

默认值

<SqlRowIdProperty>元素的默认值为空字符串。

第154章 Storage关键字 - SqlTableNumber

指定内部SQL表号。

大纲

<SqlTableNumber>123</SqlTableNumber>

该元素的值是一个表号。

0 0
0 42
文章
· 八月 26, 2021 阅读大约需 2 分钟
Storage关键字IdFunction,IdLocation,IndexLocation,SqlRowIdName

第149章 Storage关键字 - IdFunction

指定使用默认存储为持久类分配新ID值的系统函数。

大纲

<IdFunction>increment</IdFunction>

这个元素的值可以是increment(使用$increment函数)或sequence(使用$sequence函数)。

描述

如果持久化类不使用IdKey来确定对象ID值,则该元素允许指定用于分配ID值的函数($increment函数或$sequence函数)。

如果类使用$increment函数,则通过对<IdLocation>元素中定义的全局位置中存储的值进行递增来创建新的id。

0 0
0 52
文章
· 八月 25, 2021 阅读大约需 2 分钟
XData关键字XMLNamespace,DataLocation,DefaultData,Final

第145章 XData关键字 - XMLNamespace

指定XData块所属的XML名称空间。

用法

要指定XData块所属的XML名称空间,请使用如下语法:

XData name [ XMLNamespace = "namespaceURL" ] { }

其中namespaceURLXML名称空间的URI
注意,这一项是用双引号括起来的。

详情

该关键字指定XData块所属的XML名称空间。

默认

如果省略这个关键字,则该XData块的内容不属于任何名称空间。

0 0
0 49
文章
· 八月 24, 2021 阅读大约需 2 分钟
触发器关键字UpdateColumnList,Internal,MimeType,SchemaSpec

第141章 触发器关键字 - UpdateColumnList

指定一个或多个列,其修改将导致SQL触发触发器。
仅对TSQL可用。

用法

要指定其修改触发触发器的列,请使用以下语法:

Trigger name [ Event = sqlevent, UpdateColumnList = updatecolumnlist ]  {    //implementation }

其中updatecolumnlist是一个列名或用逗号分隔的列名列表,用括号括起来。

详情

该关键字指定一个或多个列,其修改将触发触发器。
注意,此关键字仅对TSQL可用。

第142章 XData关键字 - Internal

指定这个XData块是否是内部的(不在类文档中显示)。
注意,类文档目前根本没有显示XData

0 0
0 59
文章
· 八月 23, 2021 阅读大约需 2 分钟
触发器关键字OldTable,Order,SqlName,Time

第137章 触发器关键字 - OldTable

指定存储受事件影响的行或语句的旧值的转换表的名称。

用法

要指定存储旧值的转换表的名称,请使用以下语法:

Trigger name [ Event = sqlevent, OldTable = oldtable, NewTable = newtable ] {    //implementation }

其中oldtable是此命名空间中的SQL表的名称。

详情

每个触发器都可以通过转换表(由旧表和新表关键字指定)访问受事件影响的行或语句的旧值和新值。

默认

默认值为空字符串。

第138章 触发器关键字 - Order

在同一个EVENTTIME有多个触发器的情况下,指定触发器应该触发的顺序。

0 0
0 48
文章
· 八月 21, 2021 阅读大约需 3 分钟
查询关键字WebMethod,CodeMode,Event,Final

第129章 查询关键字 - WebMethod

指定这个类查询是否为web方法
仅应用于定义为web服务web客户端的类。

用法

要指定这个查询是一个web方法,请使用以下语法:

Query name(formal_spec) As classname [ WebMethod ] {    //implementation }

否则,忽略该关键字或将Not放在该关键字之前。

详情

这个关键字指定这个类查询是否是一个web方法,是否可以通过SOAP协议调用。

默认

如果忽略此关键字,则无法以web方法调用查询。

生成的类

当你将这个关键字添加到类查询并编译类时,类编译器会生成两个额外的类:

0 0
0 53
文章
· 八月 20, 2021 阅读大约需 2 分钟
查询关键字SqlName,SqlProc,SqlView,SqlViewName

第125章 查询关键字 - SqlName

覆盖投影SQL存储过程的默认名称。
仅当此查询被投影为SQL存储过程时应用。

用法

要覆盖查询投射为SQL存储过程时使用的默认名称,请使用以下语法:

Query name(formal_spec) As classname [ SqlProc, SqlName = sqlname ] {    //implementation }

其中sqlnameSQL标识符。

详解

如果将此查询投影为一个SQL存储过程,则使用此名称作为存储过程的名称。

默认

如果忽略此关键字,查询名称将用作SQL过程名称。

第126章 查询关键字 - SqlProc

指定查询是否可以作为SQL存储过程调用。

0 0
0 82

我有一个CSP页面,当我把大量的文本(例如:10000个字符)放到一个提交的表单的一个字段中时,会出现 "414 error - Request-URI Too Long"。该表格是用POST方法提交的。

根据我做的一些实验,似乎一个URL的最大尺寸是8200个字符左右。

官方的限制是什么,是否有办法增加它?我在文档中搜索了一下,但没有找到任何东西。

0 1
0 83
文章
· 八月 19, 2021 阅读大约需 4 分钟
查询关键字Private,SoapBindingStyle,SoapBodyUse,SoapNameSpace

第121章 查询关键字 - Private

指定查询是否为私有查询。

用法

要指定此查询为私有查询,请使用以下语法:

Query name(formal_spec) As classname [ Private ] {    //implementation }

否则,请省略此关键字或将该词放在该关键字之前。

详解

私有类成员只能由同一类(或其子类)的其他成员使用。请注意,其他语言通常使用单词Protected来描述这种可见性,使用单词Private来表示从子类不可见。

默认

如果省略此关键字,则此查询不是私有的。

第122章 查询关键字 - SoapBindingStyle

指定此查询用作Web方法时使用的绑定样式或SOAP调用机制。仅适用于定义为Web服务Web客户端的类。

0 0
0 45
文章
· 八月 18, 2021 阅读大约需 2 分钟
属性关键字Transient,ClientName,Final,Internal

第117章 属性关键字 - Transient

指定属性是否存储在数据库中。仅适用于持久类。

用法

要指定属性不存储在数据库中,请使用以下语法:

Property name As classname [ Transient ];

否则,请省略此关键字或将该词放在该关键字之前。

详情

对于持久化类,指定属性不存储在数据库中。

请注意, IRIS验证瞬态属性的方式与验证其他属性的方式相同。例如,当保存对象时,系统会验证其所有属性,包括所有临时属性。

在子类中,可以将非瞬态属性标记为瞬态Transient,但不能反过来。

默认

如果省略此关键字,则属性不是瞬态Transient的。

第118章 查询关键字 - ClientName

此查询的客户端投影使用的别名。

用法

要在将查询投影到客户端语言时覆盖查询的默认名称,请使用以下语法:

0 0
0 44

第113章 属性关键字 - SqlComputeOnChange

此关键字控制何时重新计算属性。仅适用于触发的计算属性。

用法

要指定何时重新计算属性,请使用以下语法:

Property name As classname [ SqlComputed, SqlComputeCode=sqlcomputecode, SqlComputeOnChange = propertynames ];

其中sqlcomputecodeSqlComputeCode中描述,propertyname是单个属性名或以逗号分隔的属性名列表。该值还可以包括值%%INSERT%%UPDATE

请注意,必须使用实际的属性名,而不是SqlFieldname给出的值。

0 0
0 71
文章
· 八月 16, 2021 阅读大约需 4 分钟
属性关键字ServerOnly,SqlColumnNumber,SqlComputeCode,SqlComputed

第109章 属性关键字 - ServerOnly

指定是否将此属性投影到Java客户机。

用法

要指定属性是否被投影到Java客户端,请使用以下语法:

Property name As classname [ ServerOnly = n ];

其中n是下列之一:
- 0表示此属性是投影的。
- 1表示不投影该属性。

详解

此关键字指定属性是否被投影到Java客户端。

默认

如果省略此关键字,属性将被投影。

第110章 属性关键字 - SqlColumnNumber

指定此属性的SQL列号。仅适用于持久类。

用法

要指定属性的SQL列号,请使用以下语法:

0 0
0 61
问题
· 八月 16, 2021
java代码中调用历程

我在官网上提供的java方式访问cache下载了一个示例代码 下载地址为:https://gettingstarted.intersystems.com/language-quickstarts/java-quicks...

我在示例代码中看到有这样一种调用 irisNative.functionString("functionName", "routineName") ,请问functionName和routineName主要指什么东西,我在studio中创建了routine,但是也不需要通过functionName来访问呀。

0 1
0 148
文章
· 八月 15, 2021 阅读大约需 4 分钟
属性关键字OnDelete,Private,ReadOnly,Required

第105章 属性关键字 - OnDelete

指定删除相关对象时在当前表中采取的操作。此关键字仅适用于将基数Cardinality 指定为“父”或“一”的关系属性。它的使用在所有其他上下文中都是无效的。

用法

要指定删除相关对象时在当前表中采取的操作,请使用以下语法:

Relationship relname As classname [ Cardinality = cardinality, Inverse = inverse, OnDelete = ondelete ];

其中ondelete是以下值之一。在本讨论中,相关记录是属于关系另一方的记录或对象,引用记录是关系这一方的记录或对象。

0 0
0 41
文章
· 八月 14, 2021 阅读大约需 3 分钟
属性关键字InitialExpression,Internal,Inverse,MultiDimensional

第101章 属性关键字 - InitialExpression

指定此属性的初始值。

用法

要指定此属性的初始值,请使用以下语法:

Property name As classname [ InitialExpression = initialexpression ];

其中,initialexpression是用大括号括起来的常量或ObjectScript表达式。

详解

此关键字指定属性的初始值。该值是在创建新实例时由类的%New()方法分配的。(如果属性是瞬态的的,则其初始值由创建实例时%New()调用的代码或实例从磁盘加载到内存时%OpenId()调用的代码确定。)

初始表达式的值必须适合给定的属性类型。

表达式可以是任意复杂的,有以下限制:

0 0
0 47
文章
· 八月 13, 2021 阅读大约需 2 分钟
属性关键字Collection,Deprecated,Final,Identity

第九十七章 属性关键字 - Collection

不推荐使用的方法是指定集合属性的集合类型。不要使用。

详解

此关键字已被“as”语法替换。

第九十八章 属性关键字 - Deprecated

指定此属性已弃用。此关键字被类编译器忽略,仅提供属性已弃用的人类可读指示符。

用法

要指定不推荐使用此属性,请使用以下语法:

Property name As classname [ Deprecated ]; 

否则,请省略此关键字或将该词放在该关键字之前。

第九十九章 属性关键字 - Final

指定此属性是否为最终属性(不能在子类中重写)。

用法

要指定属性为最终属性,请使用以下语法:

Property name As classname [ Final ];

否则,请省略此关键字或将该词放在该关键字之前。

0 0
0 79
文章
· 八月 12, 2021 阅读大约需 1 分钟
翻译:Windows、Caché 和病毒扫描程序

我最近看到一个客户问题,是使用 Caché 数据库上运行的病毒扫描程序导致应用程序间歇性变慢和用户响应时间不佳。

出乎意料的是,这是一个常见问题,所以本帖就是提个醒,要将主要 Caché 组件排除在病毒扫描之外。

通常,病毒扫描必须排除 CACHE.DAT 数据库文件和 Caché 二进制文件。 如果防病毒软件扫描 CACHE.DAT 和 InterSystems 文件,那么系统性能受到较大影响。

具体来说,防病毒软件必须排除的 Caché 文件包括:
* Caché 数据库 (CACHE.DAT)。
* Ensemble/bin 或 cache/bin 目录中的 Caché 可执行文件。
* 写入映像日志 (WIJ)。
* 日志目录中的日志文件。

更多详细信息,请参见在线文档。

更多 Caché 文档

0 0
0 107
文章
· 八月 12, 2021 阅读大约需 3 分钟
属性关键字Aliases,Calculated,Cardinality,ClientName

第九十三章 属性关键字 - Aliases

指定此属性的其他名称,以便通过对象访问使用。

用法

要为属性指定其他名称,请使用以下语法:

Property name As classname [ Aliases=othernames ]; 

其中othernames是用逗号分隔的有效属性名列表,用大括号括起来。

详解

如果指定别名关键字,编译器会创建一个或多个给定的别名,这些别名指向原始属性所指向的同一基础数据。例如,重新定义Sample.PersonName属性,如下所示:

Property Name As %String(POPSPEC = "Name()") [ Aliases = {Alternate}, Required ];

然后,代码可以使用Name属性或等效的Alternate属性,如以下终端会话所示:

0 0
0 40
文章
· 八月 11, 2021 阅读大约需 2 分钟
参数关键字Final,Flags,Internal,映射关键字Internal

第八十九章 参数关键字 - Final

指定此参数是否为final(不能在子类中重写)

用法

要指定参数为final最终参数,请使用以下语法:

Parameter name As parameter_type  [ Final ] = value;

否则,请省略此关键字或将该词放在该关键字之前。

详解

标记为Final的类成员不能在子类中被重写。

默认

如果省略此关键字,则该参数不是最终参数。

第九十章 参数关键字 - Flags

修改此参数的用户接口类型(在Studio中)。

用法

要修改此参数的用户接口类型(在Studio中),请使用以下语法:

0 0
0 68

第八十五章 方法关键字 - WebMethod

指定此方法是否为web method。仅适用于定义为web serviceweb客户端的类。

用法

要指定此方法是web方法,请使用以下语法:

Method name(formal_spec) As returnclass [ WebMethod ] 
{    //implementation }

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

详解

此关键字指定此方法作为web方法可用,并且可以通过SOAP协议调用。

重要:在大多数情况下,web方法应该是实例方法,而不是类方法。

默认

如果省略此关键字,则该方法不能作为web method使用。

0 0
0 87

第八十一章 方法关键字 - SoapRequestMessage

当多个web方法具有相同的SoapAction时使用此方法。
在默认场景中,该关键字指定请求消息的SOAP正文中的顶级元素的名称。
仅适用于定义为web服务web客户端的类。

用法

要在请求消息的SOAP体中指定顶级元素的名称,请使用以下语法:

Method name(formal_spec) As returnclass [ WebMethod, SoapAction = "MyAct", SoapRequestMessage="MyReqMessage" ] 
{    //implementation }

其中soaprequestmessage是有效的XML标识符。

详解

注意:此关键字仅对包装的文档/文字document/literal消息有效。

0 0
0 41

第七十七章 方法关键字 - SoapBindingStyle

指定此方法用作web方法时使用的绑定样式或SOAP调用机制。仅适用于定义为web服务web客户端的类。

用法

若要重写方法使用的默认绑定样式(当它用作web方法时),请使用以下语法:

Method name(formal_spec) As returnclass [ WebMethod, SoapBindingStyle = soapbindingstyle ]  
{    //implementation }

其中soapbindingstyle是下列之一:
- document文档(默认)—此web方法使用文档样式的调用。

使用这种绑定风格,SOAP消息被格式化为文档,并且通常只有一个部分。

0 0
0 84
文章
· 八月 7, 2021 阅读大约需 6 分钟
方法关键字Requires,ReturnResultsets,ServerOnly,SoapAction

第七十三章 方法关键字 - Requires

指定用户或进程调用此方法必须拥有的权限列表。

用法

要指定此方法应限于具有指定权限的用户或进程,请使用以下语法:

Method name(formal_spec) As returnclass [ Requires = privilegelist ] 
{    //implementation } 

其中,privilegelist 要么是单个特权,要么是用引号括起来的以逗号分隔的特权列表。
每个权限都采用resource:permission的形式,其中permissionUseReadWrite(或单字母缩写URW)。

若要为一个资源resource指定多个权限,请使用单字母缩写。

0 0
0 48