文章
姚 鑫 · 九月 17 阅读大约需 9 分钟
第十八章 SQL命令 CREATE TABLE(五)

第十八章 SQL命令 CREATE TABLE(五)

定义外键

外键是引用另一个表的字段;存储在外键字段中的值是唯一标识另一个表中的记录的值。此引用的最简单形式如下例所示,其中外键显式引用Customers表中的主键字段CustID

CREATE TABLE Orders (
   OrderID INT UNIQUE NOT NULL,
   OrderItem VARCHAR,
   OrderQuantity INT,
   CustomerNum INT,
   CONSTRAINT OrdersPK PRIMARY KEY (OrderID),
   CONSTRAINT CustomersFK FOREIGN KEY (CustomerNum) REFERENCES Customers (CustID)
   )

最常见的情况是,外键引用另一个表的主键字段。但是,外键可以引用RowID(ID)或标识列。在任何情况下,外键引用都必须存在于被引用的表中,并且必须定义为唯一的;被引用的字段不能包含重复值或NULL

00
0 0 7
文章
姚 鑫 · 十月 18 阅读大约需 8 分钟
第四十九章 SQL命令 GROUP BY

第四十九章 SQL命令 GROUP BY

SELECT子句,它根据一个或多个列对查询的结果行进行分组。

大纲

SELECT ...
GROUP BY field {,field2}

参数

  • field - 从其中检索数据的一个或多个字段。
    单个字段名或以逗号分隔的字段名列表。

描述

GROUP BYSELECT命令的一个子句。
可选的GROUP BY子句出现在FROM子句和可选的WHERE子句之后,可选的HAVINGORDER BY子句之前。

00
0 0 5
文章
姚 鑫 · 二月 3 阅读大约需 2 分钟
第二十三章 Caché 变量大全 $Y 变量

第二十三章 Caché 变量大全 $Y 变量

包含光标的当前垂直位置。

大纲

$Y

描述

$Y包含光标的当前垂直位置。当字符写入设备时,Caché会更新$Y以反映垂直光标位置。

输出的每个换行符(换行符)(ASCII 10)将$Y递增1。换页符(ASCII 12)将$Y重置为0。

$Y是16位无符号整数。当其值达到65536时,$Y换行为0。换句话说,如果$Y为65535,则下一个输出字符将其重置为0。

00
0 0 33
文章
姚 鑫 · 二月 18 阅读大约需 6 分钟
第四十章 Caché 变量大全 $ZREFERENCE 变量

第四十章 Caché 变量大全 $ZREFERENCE 变量

包含当前全局变量global引用。

大纲

$ZREFERENCE
$ZR

描述

$ZREFERENCE包含上次全局引用的名称和下标。这就是所谓裸指针。

注意:最后一个全局引用是最近访问的全局节点。通常,这是对全局的最新显式引用。但是,某些命令可能在内部使用$ORDER函数遍历全局下标(ZWRITE命令就是一个例子),或者它们可能在内部引用其他全局脚本。发生这种情况时,$ZREFERENCE包含上次访问的全局节点,该节点可能不是为命令指定的全局节点。

00
0 0 22
文章
姚 鑫 · 三月 19 阅读大约需 11 分钟
第十二章 使用嵌入式SQL(三)

第十二章 使用嵌入式SQL(三)

主机变量

主机变量是将文字值传入或传出嵌入式SQL的局部变量。 最常见的是,主机变量用于将本地变量的值作为输入值传递给Embedded SQL,或者将SQL查询结果值作为输出主机变量传递给Embedded SQL查询。

主机变量不能用于指定SQL标识符,例如架构名称,表名称,字段名称或游标名称。主机变量不能用于指定SQL关键字。

  • 输出主机变量仅在嵌入式SQL中使用。它们在INTO子句中指定,INTO子句是仅嵌入式SQL支持的SQL查询子句。
  • 输入主机变量可以在嵌入式SQL或动态SQL中使用。在动态SQL中,还可以使用“?”向SQL语句输入文字。输入参数。这 ”?”语法不能在Embedded SQL中使用。

在嵌入式SQL中,可以在可以使用文字值的任何位置使用输入主机变量。使用SELECT或FETCH语句的INTO子句指定输出主机变量。

00
0 0 28
文章
姚 鑫 · 四月 13 阅读大约需 14 分钟
第二章 定义和构建索引(一)

第二章 定义和构建索引(一)

概述

索引是由持久类维护的结构,InterSystems IRIS®数据平台可以使用它来优化查询和其他操作。

可以在表中的字段值或类中的相应属性上定义索引。(还可以在多个字段/属性的组合值上定义索引。)。无论是使用SQL字段和表语法还是类属性语法定义相同的索引,都会创建相同的索引。当定义了某些类型的字段(属性)时,InterSystems IRIS会自动定义索引。可以在存储数据或可以可靠派生数据的任何字段上定义附加索引。InterSystems IRIS提供了几种类型的索引。可以为同一字段(属性)定义多个索引,为不同的目的提供不同类型的索引。

无论是使用SQL字段和表语法,还是使用类属性语法,只要对数据库执行数据插入、更新或删除操作,InterSystems IRIS就会填充和维护索引(默认情况下)。可以覆盖此默认值(通过使用%NOINDEX关键字)来快速更改数据,然后作为单独的操作生成或重新生成相应的索引。可以在用数据填充表之前定义索引。还可以为已经填充了数据的表定义索引,然后作为单独的操作填充(构建)索引。

00
0 0 44

你好,

我在用一个类方法中使用$ ZF(-1)来唤起一个CSP 页面。

什么因素决定了产生过程的环境?如果使用$ ZF(-1,“ echo hello world> output.txt”),则生成的文件归cacheusr:cacheusr拥有。但是,当我使用$ ZF(-1,“ printenv> output.txt”)时,无论我在运行Web应用程序时使用哪个Cache用户名登录,环境都是来自我的个人unix帐户。

谢谢

 

What determines the environment for $ZF(-1)?

Hello,

00
0 0 17

我正在使用MDX2JSON来显示数据,它使用CSP REST来检索数据并使用密码身份验证。我为此应用程序启用了LDAP身份验证,但是它不起作用。

Is it possible to authenticate via LDAP in a CSP REST application?

I am using MDX2JSON do display data, it uses CSP REST to retrieve data and uses Password Authentication. I enabled LDAP authentication for this applicaiton, but it does not work.

00
0 0 18

InterSystems 数据平台和性能 - 第 5 部分 使用 SNMP 进行监控

在之前的帖子中,我展示了如何使用 pButtons 收集历史性能指标。 我首选 pButtons 是因为我知道它随每个数据平台实例(Ensemble、Caché、...)一起安装。 不过,还有其他方法可以实时收集、处理和显示 Caché 性能指标,以进行简单的监视,或进行更重要的并且复杂得多的运营分析和容量计划。 最常见的数据收集方法之一是使用 SNMP(简单网络管理协议)。

SNMP 是 Caché 向各种管理工具提供管理和监控信息的标准方式。 Caché 在线文档包含了 Caché 和 SNMP 之间接口的详细信息。 虽然 SNMP 应该可以直接与 Caché 配合工作,但仍有一些配置技巧和陷阱。 我经历了很多次错误的开始,并且在 InterSystems 其他同事的帮助下,才让 Caché 与操作系统 SNMP 主代理建立对话,所以我写了这篇帖子,希望您可以避免同样的痛苦。

00
0 0 27
文章
姚 鑫 · 五月 16 阅读大约需 6 分钟
第二章 使用%UnitTest进行单元测试

第二章 使用%UnitTest进行单元测试

本教程的第二部分介绍了如何使用%UnitTest包对InterSystems IRIS代码进行单元测试。完成本教程的这一部分后,将能够:

  • 解释%UnitTest包中三个主要类的角色。
  • 列出基于%UnitTest包的单元测试类和方法的要求。
  • 创建并执行方法的单元测试。
  • 浏览%UnitTest.Manager创建的测试报告。
  • 执行单元测试时,使用%UnitTest.TestCase方法初始化和还原数据库数据。

什么是%UnitTest?

%UnitTest包是一组为IRIS提供测试框架的类。在结构上,它类似于xUnit测试框架。%UnitTest为创建和执行以下各项的单元测试提供类和工具:

00
0 0 20
文章
姚 鑫 · 五月 23 阅读大约需 6 分钟
第三章 发送HTTP请求

第三章 发送HTTP请求

发送HTTP请求

创建HTTP请求后,使用以下方法之一发送该请求:

Delete()

method Delete(location As %String = "", 
              test As %Integer = 0, 
              reset As %Boolean = 1) as %Status

发出HTTP DELETE请求。

Get()

method Get(location As %String = "", 
           test As %Integer = 0, 
           reset As %Boolean = 1) as %Status

发出HTTP GET请求。此方法使Web服务器返回请求的页面。

00
0 0 28
文章
姚 鑫 · 六月 1 阅读大约需 3 分钟
第十三章 使用SSH

第十三章 使用SSH

%Net.SSH软件包支持SSH(安全外壳)通信。本主题简要介绍此包中的类。

创建SSH会话

%Net.SSH.Session表示SSH会话。要使用此类,请执行以下操作:

  1. 创建类的实例。
  2. 使用Connect()实例方法连接到服务器。
  3. 使用AuthenticateWithKeyPair()AuthenticateWithUsername()向服务器验证身份。
  4. 使用%Net.SSH.Session的其他方法执行进出远程系统的单个文件的SCP(安全复制)操作、执行远程命令、传输TCP通信或执行SFTP操作。

例如,使用SFTP将会话用于SFTP操作。此方法通过引用返回可用于SFTP操作的%Net.SSH.SFTP实例。

00
0 0 15
文章
姚 鑫 · 六月 9 阅读大约需 6 分钟
第二章 从对象写入XML输出

第二章 从对象写入XML输出

本章介绍如何从InterSystems IRIS对象生成XML输出。

创建XML编写器概述

InterSystems IRIS提供了用于为InterSystems IRIS对象生成XML输出的工具。可以指定XML投影的详细信息,如将对象投影到XML中所述。然后创建一个Writer方法,该方法指定XML输出的整体结构:字符编码、对象的显示顺序、是否包括处理指令等。

基本要求如下:

  • 如果需要特定对象的输出,则该对象的类定义必须扩展%XML.Adaptor。除了少数例外,该对象引用的类还必须扩展%XML.Adaptor

  • 输出方法必须创建%XML.Writer的实例,然后使用该实例的方法。

下面的终端会话显示了一个简单的示例,在该示例中,我们访问启用了XML的对象并为其生成输出:

10
1 0 17
文章
姚 鑫 · 六月 21 阅读大约需 3 分钟
第十四章 XML获取当前节点信息

第十四章 XML获取当前节点信息

DOM节点类型

%XML.Document%XML.Node类识别以下DOM节点类型:

  • Element ($$$xmlELEMENTNODE)

请注意,这些宏在%xml.DOM.inc包含文件中定义。

  • Text ($$$xmlTEXTNODE)

  • Whitespace ($$$xmlWHITESPACENODE).

其他类型的DOM节点被简单地忽略。

请以下XML文档:

00
0 0 11
文章
姚 鑫 · 七月 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 24

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

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

用法

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

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

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

详解

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

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

第129章 查询关键字 - WebMethod

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

用法

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

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

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

详情

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

默认

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

生成的类

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

00
0 0 17
文章
姚 鑫 · 九月 5 阅读大约需 6 分钟
第七章 SQL命令 CREATE INDEX(二)

第七章 SQL命令 CREATE INDEX(二)

UNIQUE关键字

使用UNIQUE关键字,可以指定索引中的每条记录都有一个唯一的值。
更具体地说,这确保了索引(以及包含索引的表)中的两条记录不能具有相同的排序值。
默认情况下,大多数索引使用大写字符串排序(使搜索不区分大小写)。
在本例中,值“Smith”“SMITH”被认为是相等的,而不是唯一的。
CREATE INDEX不能指定非默认索引字符串排序规则。
通过在类定义中定义索引,可以为各个索引指定不同的字符串排序规则。

可以更改名称空间的默认排序规则,使字段/属性在默认情况下区分大小写。
更改此选项需要重新编译命名空间中的所有类并重新构建所有索引。
转到Management Portal,选择Classes选项,为存储的查询选择名称空间,并使用Compile选项重新编译相应的类。
然后重建所有指数。
它们将区分大小写。

注意:当表的数据被其他用户访问时,不要重建索引。
这样做可能会导致不准确的查询结果。

00
0 0 13
文章
姚 鑫 · 九月 18 阅读大约需 4 分钟
第十九章 SQL命令 CREATE TABLE(六)

第十九章 SQL命令 CREATE TABLE(六)

WITH子句,%CLASSPARAMETER关键字,STORAGETYPE关键字

可选的WITH子句可以在表格元素逗号结尾的圆括号之后和Shard Key定义(如果存在的话)之后指定。
WITH子句可以包含一个用逗号分隔的列表:
- 一个或多个%CLASSPARAMETER 子句。
- STORAGETYPE子句

00
0 0 8
文章
姚 鑫 · 十月 19 阅读大约需 5 分钟
第五十章 SQL命令 HAVING(一)

第五十章 SQL命令 HAVING(一)

对一组数据值指定一个或多个限制性条件的SELECT子句。

大纲

SELECT field
FROM table
GROUP BY field
HAVING condition-expression

SELECT aggregatefunc(field %AFTERHAVING)
FROM table
[GROUP BY field]
HAVING condition-expression

参数

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

描述

可选的HAVING子句出现在FROM子句、可选的WHEREGROUP BY子句之后,可选的ORDER BY子句之前。

00
0 0 5