文章
· 三月 20, 2021 阅读大约需 5 分钟
第十二章 使用嵌入式SQL(四)

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

SQL游标

游标是指向数据的指针,该数据允许嵌入式SQL程序对所指向的记录执行操作。通过使用游标,Embedded SQL可以遍历结果集。嵌入式SQL可以使用游标执行查询,该查询从多个记录返回数据。嵌入式SQL还可以使用游标更新或删除多个记录。

0 0
0 147
文章
· 四月 6, 2021 阅读大约需 13 分钟
第十八章 定义和使用存储过程

第十八章 定义和使用存储过程

本章介绍如何在IntersystemsIRIS®数据平台上定义和使用Intersystems SQL中的存储过程。它讨论了以下内容:

  • 存储过程类型的概述
  • 如何定义存储过程
  • 如何使用存储过程如
  • 何列出存储过程及其参数。

概述

SQL例程是可执行的代码单元,可以由SQL查询处理器调用。 SQL例程有两种类型:功能和存储过程。从支持FunctionName()语法的任何SQL语句中调用函数。存储过程只能由CALL语句调用。函数接受某些输入定向参数并返回单个结果值。存储过程接受某些输入,输入输出和输出参数。存储过程可以是用户定义的函数,返回单个值。 CALL语句也可以调用函数。

与大多数关系数据库系统一样,Intersystems Iris允许创建SQL存储过程。存储过程(SP)提供存储在数据库中的可调用可调用的程序,并且可以在SQL上下文中调用(例如,通过使用呼叫语句或通过ODBC或JDBC)。

0 0
0 701
文章
· 四月 24, 2021 阅读大约需 12 分钟
第五章 优化查询性能(三)

第五章 优化查询性能(三)

查询执行计划

可以使用解释或显示计划工具来显示SELECTDECLAREUPDATEDELETETRUNCATE TABLE和一些INSERT操作的执行计划。这些操作统称为查询操作,因为它们使用SELECT查询作为其执行的一部分。InterSystems IRIS在准备查询操作时生成执行计划;不必实际执行查询来生成执行计划。

默认情况下,这些工具显示InterSystems IRIS认为的最佳查询计划。对于大多数查询,有多个可能的查询计划。除了InterSystems IRIS认为最佳的查询计划外,还可以生成和显示备用查询执行计划。

0 0
0 134
文章
· 五月 10, 2021 阅读大约需 5 分钟
第四章 多维存储的SQL和对象使用(二)

第四章 多维存储的SQL和对象使用(二)

索引

持久化类可以定义一个或多个索引;其他数据结构用于提高操作(如排序或条件搜索)的效率。InterSystems SQL在执行查询时使用这些索引。InterSystems IRIS对象和SQL在执行INSERTUPDATEDELETE操作时自动维护索引内的正确值。

标准索引的存储结构

标准索引将一个或多个属性值的有序集与包含属性的对象的对象ID值相关联。

例如,假设我们定义了一个简单的持久化MyApp.Person类,该类具有两个文本属性和一个关于其Name属性的索引:

0 0
0 92
文章
· 五月 25, 2021 阅读大约需 7 分钟
第六章 从POP3服务器提取电子邮件

第六章 从POP3服务器提取电子邮件

从POP3服务器提取电子邮件

与POP3服务器通信

如果拥有所需的权限,并且邮件服务器正在运行,则可以使用POP3协议从该服务器下载和处理电子邮件。通常,要与POP3服务器通信,请登录,执行一系列影响邮箱的操作,然后提交或回滚任何更改。要在系统间IRIS中执行此操作,请执行以下操作:

0 0
0 126
文章
· 九月 24, 2021 阅读大约需 4 分钟
第二十五章 SQL命令 CREATE VIEW(二)

第二十五章 SQL命令 CREATE VIEW(二)

通过视图更新

视图可用于更新视图所基于的表。可以通过视图插入新行,更新通过视图看到的行中的数据,以及删除通过视图看到的行。如果CREATE VIEW语句指定了此功能,则可以为视图发出INSERTUPDATEDELETE语句。要允许通过视图进行更新,请在定义视图时指定WITH CHECK选项(默认值)。

注意:如果视图基于分片表,则不能通过WITH CHECK OPTION视图进行INSERTUPDATEDELETE操作。
尝试这样做会导致一个SQLCODE -35,其中%msg INSERT/UPDATE/DELETE not allowed for view (sample.myview) based on sharded table with check option conditions

0 0
0 88
文章
· 十月 10, 2021 阅读大约需 3 分钟
第四十一章 SQL命令 DROP VIEW

第四十一章 SQL命令 DROP VIEW

删除视图

大纲

DROP VIEW view-name [CASCADE | RESTRICT]

参数

  • view-name 要删除的视图的名称。
    视图名可以是限定的(schema.viewname),也可以是非限定的(viewname)。
    非限定视图名接受默认模式名。
  • CASCADE RESTRICT - 可选-指定CASCADE关键字以删除引用view-name的任何其他视图。如果有另一个视图引用view-name,则指定RESTRITE将发出SQLCODE-321错误。默认值为限制。

描述

DROP VIEW命令删除视图,但不删除基础表或数据。

0 0
0 141
文章
· 十一月 10, 2021 阅读大约需 6 分钟
第七十二章 SQL命令 SELECT(四)

第七十二章 SQL命令 SELECT(四)

WHERE子句

WHERE子句限定或取消查询选择中的特定行。
符合条件的行是那些条件表达式为真的行。
条件表达式是逻辑测试(谓词)的列表,可以通过ANDOR逻辑操作符链接这些测试(谓词)。
这些谓词可以使用NOT一元逻辑操作符进行反转。

SQL谓词可分为以下几类:
- Comparison 谓词
- BETWEEN 谓词
- LIKE 谓词
- NULL 谓词
- IN and %INLIST 谓词
- EXISTS 谓词
- FOR SOME 谓词
- FOR SOME %ELEMENT 谓词

0 0
0 102
文章
· 十一月 25, 2021 阅读大约需 4 分钟
第八十七章 SQL命令 VALUES

第八十七章 SQL命令 VALUES

指定字段中使用的数据值的INSERT/UPDATE子句。

大纲

(field1{,fieldn})
     VALUES (value1{,valuen})

参数

  • field - 字段名或以逗号分隔的字段名列表。
  • value - 值或以逗号分隔的值列表。
    每个值被赋给相应的字段。

描述

VALUES子句用于INSERTUPDATEINSERT or UPDATE语句中,以指定要插入到字段中的数据值。
通常:

0 0
0 99
文章
· 十二月 12, 2021 阅读大约需 3 分钟
第十三章 SQL谓词 IS JSON

第十三章 SQL谓词 IS JSON

确定数据值是否为JSON格式。

注意:IRIS版本可用。其他不行。

大纲

scalar-expression IS [NOT] JSON [keyword]

参数

  • scalar-expression - 正在检查JSON格式的标量表达式。
  • keyword - 可选—可选值、标量、数组或对象。
    默认为VALUE

描述

IS JSON谓词确定数据值是否为JSON格式。
下面的示例确定谓词是否是格式化正确的JSON字符串,是JSON对象还是JSON数组:

0 0
0 93
文章
· 一月 14, 2022 阅读大约需 2 分钟
第二十四章 SQL函数 CEILING

第二十四章 SQL函数 CEILING

数值函数,返回大于或等于给定数值表达式的最小整数。

大纲

CEILING(numeric-expression)

{fn CEILING(numeric-expression)}

参数

  • numeric-expression - 要计算其上限的数字。

CELING返回与NUMERIC-EXPRESSION相同的数据类型。

描述

CELING返回大于或等于NUMERIC-EXPRESSION的最接近的整数值。返回值的小数位数为0。当numeric-expressionNULL值、空字符串(‘’)或任何非数字字符串时,CELING返回NULL

0 0
0 91
文章
· 二月 1, 2022 阅读大约需 4 分钟
第四十一章 SQL函数 DATE

第四十一章 SQL函数 DATE

接受时间戳并返回日期的函数。

大纲

DATE(timestamp)

参数

  • timestamp - 指定时间戳或其他日期或日期和时间表示形式的表达式。

描述

Date接受时间戳表达式并返回日期。返回值的数据类型为Date。这在功能上与CAST相同(时间戳与日期相同)。它接受具有以下任何数据类型类(或其子类)的时间戳值:%Library.TimeStamp%Library.PosiTime%Library.Date%Library.Integer%Library.Numerical(用于隐式逻辑日期,如+$HOROLOG)。它还可以接受格式与%Library.TimeStamp(有效的ODBC日期)兼容的%Library.String值。

0 0
0 92
文章
· 二月 15, 2022 阅读大约需 3 分钟
第五十五章 SQL函数 %EXTERNAL

第五十五章 SQL函数 %EXTERNAL

以显示格式返回表达式的格式转换函数。

大纲

%EXTERNAL(expression)

%EXTERNAL expression

参数

  • expression - 要转换的表达式。字段名、包含字段名的表达式或返回值为可转换数据类型(如DATE%LIST)的函数。不能是流字段。

描述

%EXTERNAL将表达式转换为显示格式,与当前选择模式(显示模式)无关。显示格式表示VARCHAR数据类型的数据,无论字段或数据类型LogicalToDisplay方法执行什么数据转换。

%EXTERNAL通常用于选择列表SELECT-ITEM。它可以在WHERE子句中使用,但不建议这样使用,因为使用%EXTERNAL会阻止在指定字段上使用索引。

0 0
0 90
文章
· 三月 18, 2022 阅读大约需 5 分钟
第八十五章 SQL函数 $LISTGET

第八十五章 SQL函数 $LISTGET

返回列表中的元素或指定默认值的列表函数。

大纲

$LISTGET(list[,position[,default]])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • position - 可选 — 解释为指定列表中的位置的表达式。
  • default - 可选 — 如果列表元素具有未定义的值,则该表达式提供要返回的值。

描述

$LISTGET 将指定列表中的请求元素作为标准字符串返回。如果位置参数的值引用不存在的成员或标识具有未定义值的元素,则返回指定的默认值。

0 0
0 73
文章
· 四月 3, 2022 阅读大约需 3 分钟
第101章 SQL函数 NVL

第101章 SQL函数 NVL

测试 NULL 并返回适当表达式的函数。

大纲

NVL(check-expression,replace-expression)

参数

  • check-expression - 要计算的表达式。
  • replace-expression - 如果 check-expressionNULL,则返回的表达式。

NVL 返回与检查表达式相同的数据类型。

0 0
0 90
文章
· 四月 18, 2022 阅读大约需 3 分钟
第116章 SQL函数 REPLACE

第116章 SQL函数 REPLACE

字符串函数,用于替换字符串中的子字符串。

大纲

REPLACE(string,oldsubstring,newsubstring)

参数

  • string - 作为子字符串搜索目标的字符串表达式。
  • oldsubstring - 字符串中要匹配的子字符串。
  • newsubstring - 用于替换 oldsubstring 的子字符串。

描述

REPLACE 在字符串中搜索子字符串并替换所有匹配项。匹配区分大小写。如果找到匹配项,它将用 newsubstring 替换 oldsubstring 的每个实例。替换子串可能比它替换的子串长或短。如果找不到子字符串,则 REPLACE 将原样返回原字符串。

0 0
0 132
文章
· 五月 16, 2022 阅读大约需 5 分钟
第144章 SQL函数 TO_DATE(二)

第144章 SQL函数 TO_DATE(二)

一年中的某一天(DDD 格式)

可以使用 DDD 将一年中的某一天(自 1 月 1 日以来经过的天数)转换为实际日期。格式字符串 DDD YYYY 必须与由整数天数和四位数年份组成的相应 date_string 配对。 (与 DDD 一起使用时,两位数的年份必须指定为 RR(而不是 YY)。)格式字符串 DDD 默认为当前年份。经过的天数必须是 1 到 365 范围内的正整数(如果 YYYY 是闰年,则为 366)。四位数年份必须在标准 日期范围内:18419999DDDYYYY 格式元素可以按任意顺序指定;它们之间的分隔符是强制性的。以下示例显示了这一年中的一天的用法:

0 0
0 195
文章
· 六月 20, 2022 阅读大约需 4 分钟
第五章 操作位和位串

第五章 操作位和位串

有时可能希望在基于数据平台的应用程序中存储一系列相关的布尔值。可以创建许多布尔变量,也可以将它们存储在数组或列表中。或者可以使用称为“位串”的概念,它可以定义为位序列,首先呈现最低有效位。位串允许您以非常有效的方式存储此类数据,无论是在存储空间还是处理速度方面。

位串可以以两种方式之一存储,作为压缩字符串或整数。如果在没有上下文的情况下听到术语“位串”,则表示位序列存储为压缩字符串。本文向介绍了这两种类型的位串,然后介绍了一些可用于操作它们的技术。

将位序列存储为位串

存储位序列的最常见方式是在位串中,这是一种特殊的压缩字符串。除了节省存储空间外,还可以使用 ObjectScript 系统函数有效地操作位串。

这样的系统函数是 $factor,它将整数转换为位串。我们可以通过执行以下语句将整数 11744 转换为位串:

set bitstring = $factor(11744)

要查看位串内容的表示,可以使用 zwrite 命令:

0 0
0 99
文章
· 七月 6, 2022 阅读大约需 4 分钟
第二十章 使用工作队列管理器(三)

第二十章 使用工作队列管理器(三)

管理类别

一个类别是一个独立的worker jobs池。当初始化一组worker jobs时,可以指定提供worker的类别。如果集合中的任何worker jobs在执行work项时请求额外的worker jobs,则新的worker jobs来自同一类别。

例如,假设系统提供的 SQL 类别分配了最多 8 个worker。然后,假设与BusinessIntelligence相关的流程创建了一个类别,并将最多四个worker分配给该类别。如果 SQL 池中的所有worker在给定时间都参与了工作,则 BusinessIntelligence 类别中的worker可能仍然可以立即处理工作项。

系统包括两个不能删除的类别:SQLDefault。 SQL 类别适用于系统执行的任何 SQL 处理,包括查询的并行处理。当在未指定类别的情况下初始化一组worker jobs时,默认类别提worker jobs。

每个类别都具有影响该类别中每个工作队列的行为的属性。这些属性是:

0 0
0 105
文章
· 一月 30 阅读大约需 2 分钟
第十一章 F - H 开头的术语

第十一章 F - H 开头的术语

文件流 (file stream)

对象(Objects)

文件流提供了一个接口,用于在外部文件中操作和存储大量基于文本或二进制的数据。IRIS 的流接口可以在 ObjectScriptSQLJava 中用于操作文件流。

最终类 (final class)

对象(Objects)

不能被扩展或子类化的类。

最终方法 (final method)

对象(Objects)

不能被重写的方法。

最终属性 (final property)

对象(Objects)

不能被重写的属性。

外键 (foreign key)

InterSystems SQL

外键约束表中的一列指向另一表中的另一列。为第一列提供的值必须存在于第二列中。

0 0
0 44
文章
· 三月 21, 2021 阅读大约需 9 分钟
第十二章 使用嵌入式SQL(五)

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

嵌入式SQL变量

以下局部变量在嵌入式SQL中具有特殊用途。这些局部变量名称区分大小写。在过程启动时,这些变量是不确定的。它们由嵌入式SQL操作设置。也可以使用SET命令直接设置它们,或使用NEW命令将其重置为未定义。像任何局部变量一样,值将在过程持续期间或直到设置为另一个值或使用NEW进行定义之前一直存在。例如,某些成功的嵌入式SQL操作未设置%ROWID。执行这些操作后,%ROWID是未定义的或保持设置为其先前值。

  • %msg
  • %ROWCOUNT
  • %ROWID
  • SQLCODE

这些局部变量不是由Dynamic SQL设置的。 (请注意,SQL Shell和Management Portal SQL接口执行Dynamic SQL。)相反,Dynamic SQL设置相应的对象属性。

0 0
0 154
文章
· 四月 25, 2021 阅读大约需 10 分钟
第五章 优化查询性能(四)

第五章 优化查询性能(四)

注释选项

可以在SELECTINSERTUPDATEDELETETRUNCATE表命令中为查询优化器指定一个或多个注释选项。
注释选项指定查询优化器在编译SQL查询期间使用的选项。
通常,注释选项用于覆盖特定查询的系统范围默认配置。

语法

语法/*#OPTIONS */(在/*#之间没有空格)指定了一个注释选项。
注释选项不是注释;
它为查询优化器指定一个值。
注释选项使用JSON语法指定,通常是“key:value”对,例如: /*#OPTIONS {"optionName":value} */
支持更复杂的JSON语法,比如嵌套值。

0 0
0 142