文章 姚 鑫 · 五月 28, 2021 阅读大约需 4 分钟 第九章 创建、编写和阅读MIME邮件 第九章 创建、编写和阅读MIME邮件 Iris提供了一个可以用于创建MultiPart Mime消息(%Net.MimePart)的类。创建要添加到SOAP消息的附件时,请使用此类;请参阅创建Web服务和Web客户端。因为MIME是一个常见的标准,所以有许多其他可能的应用程序,例如电子邮件处理和HTTP Multipart Post。 # MIME消息概述 MIME格式的文档被称为MIME部分。每个MIME部件都有标题,包含邮件正文(文本或二进制)或包含额外的MIME部件。具有MIME版本标题的MIME部分可以用作顶级文档,称为MIME消息。下图显示了示例: 在该示例中,E和F具有未显示的附加子部分。 要表示MIME部件,请使用 %Net.MIMEPart类,该类提供用于设置零件的标题和内容的属性。 # 创建MIME部分 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 97
文章 姚 鑫 · 九月 11, 2021 阅读大约需 3 分钟 第十三章 SQL命令 CREATE ROLE 第十三章 SQL命令 CREATE ROLE 创建角色 大纲 CREATE ROLE role-name 参数 role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。 描述 CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。 #API #SQL #Caché 0 0 0 61
文章 姚 鑫 · 九月 28, 2021 阅读大约需 4 分钟 第二十八章 SQL命令 DELETE(二) 第二十八章 SQL命令 DELETE(二) 示例 以下两个示例都删除了TempEmployees表中的所有行。请注意,FROM关键字是可选的: DELETE FROM TempEmployees DELETE TempEmployees 以下示例从Employees表中删除员工编号234: DELETE FROM Employees WHERE EmpId = 234 下面的示例从ActiveEmployees表中删除CurStatus列设置为“RETIRED”的所有行: #SQL #Caché 0 0 0 58
文章 姚 鑫 · 十月 13, 2021 阅读大约需 2 分钟 第四十四章 SQL命令 FREEZE PLANS 第四十四章 SQL命令 FREEZE PLANS 冻结查询计划。 #SQL #Caché 0 0 0 58
文章 姚 鑫 · 十月 28, 2021 阅读大约需 7 分钟 第五十九章 SQL命令 JOIN(一) 第五十九章 SQL命令 JOIN(一) 基于两个表中的数据创建表的SELECT子句。 #SQL #Caché 0 0 0 48
文章 姚 鑫 · 十一月 13, 2021 阅读大约需 11 分钟 第七十五章 SQL命令 START TRANSACTION 第七十五章 SQL命令 START TRANSACTION 开始一个事务。 #SQL #Caché 0 0 0 71
文章 姚 鑫 · 十一月 28, 2021 阅读大约需 2 分钟 第九十章 SQL命令 WHERE CURRENT OF 第九十章 SQL命令 WHERE CURRENT OF 使用游标指定当前行的UPDATE/DELETE子句。 大纲 WHERE CURRENT OF cursor 参数 cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。 描述 WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATE或DELETE语句,以指定位于要更新或删除记录上的游标。 例如: &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor) 删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。 #SQL #Caché 0 0 0 45
文章 姚 鑫 · 十二月 14, 2021 阅读大约需 7 分钟 第十五章 SQL谓词 LIKE 第十五章 SQL谓词 LIKE 用包含字面值和通配符的模式字符串匹配值。 #SQL #Caché 0 0 0 80
文章 姚 鑫 · 十二月 31, 2021 阅读大约需 4 分钟 第十一章 SQL聚合函数 SUM 第十一章 SQL聚合函数 SUM 返回指定列值之和的聚合函数。 #SQL #Caché 0 0 0 29
文章 姚 鑫 · 一月 19, 2022 阅读大约需 3 分钟 第二十八章 SQL函数 CHAR_LENGTH 第二十八章 SQL函数 CHAR_LENGTH 返回表达式中的字符数的函数。 大纲 CHAR_LENGTH(expression) 参数 expression - 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHAR或VARCHAR)、数字或数据流。 CHAR_LENGTH返回整数数据类型。 描述 CHAR_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。 #SQL #Caché 0 0 0 53
文章 姚 鑫 · 二月 4, 2022 阅读大约需 6 分钟 第四十四章 SQL函数 DATENAME 第四十四章 SQL函数 DATENAME 日期/时间函数,它返回一个字符串,表示日期/时间表达式中指定部分的值。 #SQL #Caché 0 0 0 51
文章 Qiao Peng · 二月 18, 2022 阅读大约需 6 分钟 SQL语句与数据模式(Select Mode) 在InterSystems IRIS和InterSystems Caché 里,是否您遇到过执行一个SQL Insert/Update语句,明明给的是正确的日期值,但被告知“值‘2022-01-01’ 校验失败”的类似情况,并感到困惑? 如果有,那么您需要了解一下InterSystems IRIS和InterSystems Caché保存和显示数据的模式。 一 数据模式 InterSystems IRIS和InterSystems Caché里,数据有3种模式,称之为SELECT MODE:逻辑模式:这是数据被保存到InterSystems IRIS和InterSystems Cache'时的格式。例如,%Date类型的数据,在数据库里被保存为一个整数,即从1840年12月31号到这个日期的天数,而不是YYYY-MM-DD的格式。 ODBC模式:这是ODBC对数据定义的格式。在这个模式下,%Date类型的数据就会显示为YYYY-MM-DD的格式。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 167
文章 姚 鑫 · 三月 5, 2022 阅读大约需 2 分钟 第七十二章 SQL函数 LAST_IDENTITY 第七十二章 SQL函数 LAST_IDENTITY 返回最后插入、更新、删除或读取的行的标识的标量函数。 大纲 LAST_IDENTITY() 描述 LAST_IDENTITY函数返回%ROWID局部变量值。在嵌入式SQL或ODBC中将%ROWID局部变量设置为一个值。动态SQL、SQL Shell或管理门户SQL界面未将%ROWID局部变量设置为值。动态SQL改为设置%ROWID对象属性。 LAST_IDENTITY函数不接受任何参数。请注意,参数括号是必需的。 LAST_IDENTITY返回受当前进程影响的最后一行的标识字段值。如果表没有标识字段,则返回受当前进程影响的最后一行的行ID(%ROWID)。返回值为数据类型INTEGER。 #SQL #Caché 0 0 0 51
文章 姚 鑫 · 三月 21, 2022 阅读大约需 3 分钟 第八十八章 SQL函数 $LISTTOSTRING 第八十八章 SQL函数 $LISTTOSTRING 从列表创建字符串的列表函数。 大纲 $LISTTOSTRING(list[,delimiter]) 参数 list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD 或 $LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。 delimiter - 可选 — 插入以分隔子字符串的分隔符。分隔符可以是一个或多个字符,指定为带引号的字符串。要连接不带分隔符的子字符串,请指定空字符串 ('')。如果不指定分隔符,则默认为逗号 (,) 字符。 描述 $LISTTOSTRING 采用 列表并将其转换为字符串。在结果字符串中,列表的元素由分隔符分隔。 #SQL #Caché 0 0 0 45
文章 姚 鑫 · 四月 6, 2022 阅读大约需 2 分钟 第104章 SQL函数 %ODBCOUT 第104章 SQL函数 %ODBCOUT 以 ODBC 格式返回表达式的格式转换函数。 大纲 %ODBCOUT(expression) %ODBCOUT expression 参数 expression - 要转换的表达式。字段名称、包含字段名称的表达式或以可转换数据类型(例如 DATE 或 %List)返回值的函数。不能是流字段。 描述 %ODBCOUT 在通过字段或数据类型的 LogicalToOdbc 方法传递值后以 ODBC 格式返回表达式。 ODBC 格式是可以通过 ODBC 呈现数据的格式。当数据暴露给 ODBC/SQL 时使用这种格式。可用的格式对应于 ODBC 定义的格式。 #SQL #Caché 0 0 0 44
文章 姚 鑫 · 四月 21, 2022 阅读大约需 1 分钟 第119章 SQL函数 RIGHT 第119章 SQL函数 RIGHT 标量字符串函数,它从字符串表达式的末尾(最右边的位置)返回指定数量的字符。 大纲 {fn RIGHT(string-expression,count)} 参数 string-expression - 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。 count - 整数,指定从 string-expression 的结束(最右边)位置返回的字符数。 描述 RIGHT 从字符串表达式的末尾(最右边的位置)返回 count 个字符。如果为任一参数传递 NULL 值,RIGHT 将返回 NULL。 #SQL #Caché 0 0 0 42
文章 姚 鑫 · 五月 3, 2022 阅读大约需 1 分钟 第131章 SQL函数 SQUARE 第131章 SQL函数 SQUARE 返回数字平方的标量数值函数。 大纲 SQUARE(numeric-expression) 参数 numeric-expression - 解析为数值的表达式。 SQUARE 返回 NUMERIC 或 DOUBLE 数据类型。如果 numeric-expression 是数据类型 DOUBLE,则 SQUARE 返回 DOUBLE;否则,它返回 NUMERIC。 描述 SQUARE 返回数值表达式的平方。如果传递 NULL 值,SQUARE 返回 NULL。 SQUARE 返回的精度和小数位数与 SQL 乘法运算符返回的相同。 #SQL #Caché 0 0 0 57
文章 姚 鑫 · 五月 18, 2022 阅读大约需 10 分钟 第146章 SQL函数 TO_POSIXTIME 第146章 SQL函数 TO_POSIXTIME 注:此函数在IRIS版本可用,Cache不可用。 将格式化的日期字符串转换为 %PosixTime 时间戳的日期/时间函数。 #SQL #Caché 0 0 0 45
文章 Michael Lei · 六月 7, 2022 阅读大约需 3 分钟 绕过ODBC使用ObjectScript访问远程系统 绕过ODBC使用ObjectScript访问远程系统 这是一个在 IRIS 2020.1 和 Caché 2018.1.3 上工作的代码示例 不会与新版本保持同步 也不会获得 InterSystems 提供的支持服务! 我们经常会遇到这样的情况,由于各种原因ODBC是访问一个远程系统的唯一选择。如果你只需要检查或改变表,这就足够了。但你不能直接执行一些命令或改变一些Global。 特别感谢@Anna.Golitsyna 启发我发表此文。 这个例子提供了3种 SQLprocedure 方法来实现访问远程系统这个目的,如果其他的访问方式被阻止,通常是被一些防火墙阻止。 #ObjectScript #ODBC #SQL #Globals #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 80
文章 姚 鑫 · 六月 23, 2022 阅读大约需 3 分钟 第八章 操作位和位串(四) 第八章 操作位和位串(四) 操作以整数形式实现的位串 设置位 要创建一个存储为整数的新位串,请对每个位求和 2 的幂: set bitint = (2**2) + (2**5) + (2**10) write bitint 1060 要将现有位串中的位设置为 1,请使用 $zboolean 函数(逻辑 OR)的选项7 (arg1 ! arg2): set bitint = $zboolean(bitint, 2**4, 7) write bitint 1076 要将现有位串中的位设置为 0,请使用 $zboolean 函数的选项 2 (arg1 & ~arg2): #SQL #Caché 0 0 0 65
文章 姚 鑫 · 七月 10, 2022 阅读大约需 5 分钟 第一章 嵌入式Python概述(一) 第一章 嵌入式Python概述(一) 嵌入式 Python 允许将 Python 与 IRIS 数据平台的本地编程语言 ObjectScript 一起使用。当使用嵌入式 Python 在 IRIS 类中编写方法时,Python 源代码与编译后的 ObjectScript 代码一起编译为在服务器上运行的目标代码。与使用网关或 Python的 Native SDK 相比,这允许更紧密的集成。还可以导入 Python 包,无论它们是自定义的还是公开的,并在ObjectScript 代码中使用它们。 Python 对象是 ObjectScript 中的一等公民,反之亦然。 #SQL #Caché 0 0 0 170
文章 Hao Ma · 三月 21 阅读大约需 1 分钟 IRIS/Caché SQL优化经验分享 - Bitmap Extent Bitmap索引是指对某个,或者某几个字段建立的bit map(位图映射)。如果是对整个表的记录,也就是表的%ID做位图映射,得到的特殊的bitmap索引在IRIS/Caché里被称为Bitmap Extent。 建立Bitmap Extent索引的目的就是加快COUNT(*)的执行。提高了多少呢? 下面两个显示的是最简单的全表查询花费的时间: 不使用Bitmap Extent : 1.3810s 使用Bitmap Extent: 0.0038 相差有几百倍。 #SQL #新手 #InterSystems IRIS 0 0 0 18
文章 姚 鑫 · 三月 14, 2021 阅读大约需 7 分钟 第十章 SQL排序(一) 第十章 SQL排序 排序规则指定值的排序和比较方式,并且是InterSystems SQL和InterSystemsIRIS®数据平台对象的一部分。有两种基本排序规则:数字和字符串。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 375
文章 姚 鑫 · 三月 31, 2021 阅读大约需 15 分钟 第十四章 使用SQL Shell界面(二) 第十四章 使用SQL Shell界面(二) 存储和调用SQL语句 通过数据回调 SQL Shell自动将在终端会话期间发出的每个成功的SQL语句存储在本地缓存中,并为其分配一个顺序号。这些数字用于在当前Terminal过程中重新调用以前的SQL语句。 SQL Shell仅将数字分配给成功的SQL语句。如果在准备SQL语句期间发生错误,则不会分配任何编号。这些数字分配不是特定于名称空间的。以下是可用的数字调用命令: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 97
文章 姚 鑫 · 四月 18, 2021 阅读大约需 13 分钟 第三章 优化表(一) 第三章 优化表(一) 要确保InterSystems IRIS®Data Platform上的InterSystems SQL表的最高性能,可以执行多种操作。优化可以对针对该表运行的任何查询产生重大影响。本章讨论以下性能优化注意事项: ExtentSize、Selective和BlockCount用于在用数据填充表之前指定表数据估计;此元数据用于优化未来的查询。 运行tune Table来分析填充表中的代表表数据;生成的元数据用于优化未来的查询。 优化表计算的值包括扩展大小、选择性、异常值选择性、平均字段大小和块计数 导出和重新导入优选表统计数据 扩展大小、选择性和块数(ExtentSize, Selectivity, and BlockCount) 当查询优化器决定执行特定SQL查询的最有效方式时,它会考虑以下三种情况: #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 140
文章 姚 鑫 · 四月 30, 2021 阅读大约需 12 分钟 第八章 解释SQL查询计划(二) 第八章 解释SQL查询计划(二) SQL语句的详细信息 有两种方式显示SQL语句的详细信息: 在SQL Statements选项卡中,通过单击左侧列中的Table/View/Procedure Name链接选择一个SQL Statement。 这将在单独的选项卡中显示SQL语句详细信息。 该界面允许打开多个选项卡进行比较。 它还提供了一个Query Test按钮,用于显示SQL Runtime Statistics页面。 从表的Catalog Details选项卡(或SQL Statements选项卡)中,通过单击右边列中的Statement Text链接选择一个SQL语句。 这将在弹出窗口中显示SQL语句详细信息。 可以使用“SQL语句详细信息”显示来查看查询计划,并冻结或解冻查询计划。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 87
文章 姚 鑫 · 五月 14, 2021 阅读大约需 3 分钟 第六章 临时全局变量和IRISTEMP数据库 第六章 临时全局变量和IRISTEMP数据库 对于某些操作,可能需要全局变量的功能,而不需要无限期保存数据。例如,可能希望使用全局对某些不需要存储到磁盘的数据进行排序。对于这些操作,InterSystems IRIS提供了临时全局机制。该机制的工作方式如下: 对于应用程序名称空间,可以定义一个全局映射,以便将具有特定命名约定的全局变量映射到IRISTEMP数据库,该数据库是一个特殊的数据库,如下所述。 例如,可以定义一个全局映射,以便将名称为^AcmeTemp*的所有全局变量映射到IRISTEMP数据库。 - 当代码需要临时存储数据并再次读取它时,代码将向使用该命名约定的全局变量写入数据,并从全局变量读取数据。 例如,要保存值,代码可能会执行以下操作: set ^AcmeTempOrderApp("sortedarray")=some value 然后,稍后代码可能会执行以下操作: #SQL #Caché #Global Masters #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 74
文章 姚 鑫 · 五月 30, 2021 阅读大约需 8 分钟 第十一章 发送和接收IBM WebSphere MQ消息 第十一章 发送和接收IBM WebSphere MQ消息 InterSystems IRIS为IBM WebSphere MQ提供了一个接口,可以使用该接口在InterSystems IRIS和IBM WebSphere MQ的消息队列之间交换消息。要使用此接口,必须能够访问IBM WebSphere MQ服务器,并且IBM WebSphere MQ客户端必须与InterSystems IRIS在同一台计算机上运行。 该接口由%Net.MQSend和%Net.MQRecv类组成,这两个类都是%Net.abstractMQ的子类。这些类使用由InterSystems IRIS在所有合适的平台上自动安装的动态链接库。(这是Windows上的MQInterface.dll;其他平台的文件扩展名不同。)。反过来,InterSystems IRIS动态链接库需要IBM WebSphere MQ动态链接库。 该界面仅支持发送和接收文本数据,不支持二进制数据。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 291
文章 姚 鑫 · 九月 12, 2021 阅读大约需 9 分钟 第十四章 SQL命令 CREATE TABLE(一) 第十四章 SQL命令 CREATE TABLE(一) 创建表 #SQL #Caché 0 0 0 51
文章 姚 鑫 · 九月 29, 2021 阅读大约需 9 分钟 第二十九章 SQL命令 DISTINCT 第二十九章 SQL命令 DISTINCT 指定仅返回不同值的SELECT子句。 大纲 SELECT [DISTINCT [BY (item {,item2})] ] | [ALL] select-item {,select-item2} 参数 DISTINCT - 可选-返回组合选择项值唯一的行。 DISTINCT BY (item {,item2}) - 可选-返回按(项)值唯一的行的选择项值。 ALL - 可选-返回结果集中的所有行。默认设置。 描述 可选DISTINCT子句出现在SELECT关键字之后、可选TOP子句和第一个SELECT-ITEM之前。 #SQL #Caché 0 0 0 394