文章 姚 鑫 · 十月 12, 2021 3m read

第四十三章 SQL命令 FETCH

重新定位游标,并从中检索数据。

大纲

FETCH cursor-name [INTO host-variable-list ]

参数

  • cursor-name - 当前打开的游标的名称。 游标名称是在DECLARE命令中指定的。 游标名称区分大小写。
  • INTO host-variable-list - 可选—将取操作列中的数据放入局部变量中。 host-variable-list指定一个主机变量或一个逗号分隔的主机变量列表,它们是包含与游标关联的数据的目标。 INTO句是可选的。 如果没有指定,语句只定位游标。

描述

在嵌入式SQL应用程序中,FETCH语句从游标检索数据。 所需的操作顺序是:、OPEN、、。 在未打开的游标上尝试会导致错误。

作为SQL语句,这只在嵌入式SQL中得到支持。 通过ODBC使用支持等价的操作。

子句可以指定为DECLARE语句的子句,也可以指定为语句的子句,或者两者都指定。 子句允许将列中的数据放到本地主机变量中。 列表中的每个主机变量,从左到右,都与游标结果集中的相应列相关联。 每个变量的数据类型必须匹配或支持对应结果集列的数据类型的隐式转换。 变量的数量必须与游标选择列表中的列数匹配。

当游标前进到数据的末尾时,操作就完成了。 这将设置(没有更多数据)。 它还将%ROWCOUNT变量设置为获取的行数。

注意:只有当

0
0 199
文章 姚 鑫 · 十月 11, 2021 5m read

第四十二章 SQL命令 EXPLAIN

返回指定查询的查询计划。

大纲

EXPLAIN [ALT] [STAT]  [INTO :host-variable] query

参数

  • ALT - 可选-返回备用查询计划。默认情况下,返回单个查询计划。
  • STAT - 可选-(仅限动态SQL):返回查询计划运行时性能统计信息。默认情况下,返回不带运行时统计信息的查询计划。对于嵌入式SQL,此语法被忽略。
  • INTO :host-variable - 可选-(仅限嵌入式SQL):放置查询计划的输出主机变量。对于动态SQL,此语法被忽略。
  • query - SELECT query

描述

命令以标记文本字符串的形式返回指定查询的查询计划。 该查询计划作为一个结果集返回,该结果集由一个名为的字段组成。

查询必须是查询。 不能用于创建查询计划的其他SQL操作,例如带SELECT子句的。 指定不以关键字开始的查询将导致。 可以使用显示非查询的查询计划。

和关键字可以以任何顺序指定。 INTO关键字必须在这些关键字之后指定。

可选的关键字生成备用查询计划。 所有备用查询计划都以相同的标记文本字符串返回。 规范化查询文本(标记为)在每个查询计划之前列出。

可选的关键字生成查询计划中每个模块的运行时性能统计。 这些统计信息包含在包含查询计划的标记文本字符串中。 每个模块的统计数据如下:

  • :模块名。
0
0 141
文章 姚 鑫 · 十月 10, 2021 3m read

第四十一章 SQL命令 DROP VIEW

删除视图

大纲

DROP VIEW view-name [CASCADE | RESTRICT]

参数

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

描述

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

也可以使用方法调用来调用拖放视图操作:

$SYSTEM.SQL.Schema.DropView(viewname,SQLCODE,%msg)

权限

DROP VIEW命令是特权操作。在使用之前,进程必须拥有指定视图的管理权限或权限。否则将导致错误(特权冲突)。可以通过调用命令来确定当前用户是否具有删除权限。可以通过调用方法来确定指定用户是否具有删除权限。如果拥有适当的授予权限,则可以使用命令分配权限。

在嵌入式SQL中,可以使用方法以具有适当权限的用户身份登录:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有权限才能调用方法。

可以删除基于从部署的持久类投影的表的视图。

0
0 219
文章 姚 鑫 · 十月 9, 2021 1m read

第四十章 SQL命令 DROP USER

删除用户帐户。

大纲

DROP USER user-name

参数

  • user-name 要删除的用户名。

描述

DROP USER命令可删除用户帐户。此用户帐户是使用CREATE USER创建的,并指定了用户名。如果指定的用户名与现有用户帐户不对应, IRIS将发出错误。可以通过调用方法来确定用户是否存在。

用户名不区分大小写。

还可以使用管理门户删除用户。选择System Administration(系统管理)、Security(安全性)、Users(用户)以列出现有用户。在此用户帐户表上,可以单击要删除的用户帐户的删除。

权限

命令是特权操作。在嵌入式SQL中使用之前,必须以具有适当权限的用户身份登录。否则将导致SQLCODE-99错误(特权冲突)。

使用$SYSTEM.Security.Login()方法分配具有适当权限的用户:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有权限才能调用方法。

示例

可以通过下面的语句来删除PSMITH:

DROP USER psmith
0
0 117
文章 Qianzhu Liu · 十月 9, 2021 5m read

手术室是医疗机构最重要和最紧缺的医疗资源之一,也是节奏最快、强度最高、人员最密、责任最大的临床场景之一。传统基于人工和纸质的手术申请、手术排期、手术记录和交接转移等耗费了医务人员大量的时间和精力,导致手术室资源运用效率欠佳,且数据时限性与准确性均有待提高。医学信息系统问世和应用后,手术室系统的实施与优化一直是临床用户与医学信息工作者共同热议的话题。

手术室系统既可以作为整体医学信息系统的一部分,也可以作为单独的产品/模块与其他系统对接。鉴于手术室系统过于庞大和精细,本文只挑选其中的“临床记录表”功能进行探讨。

1. 化零为整临床记录表

手术过程中会产生诸多数据,这些数据可能来自于患者(生命体征、出入量等)、仪器(心电监护仪、呼吸机、麻醉机、、输液泵等)或者其他系统(电子病历系统、医嘱系统、耗材系统等),分别由不同角色(医生、护士、麻醉师、药剂师等)进行录入和传输。为了让手术核心参与人员方便的获取全部所需数据,手术室系统首先应该做到“化零为整”的前端展示。图1中的“临床记录表”大体分为4个部分:

行动栏:医务人员通过行动栏中的行动项目,可以清晰的获知在当前场景下需要完成的工作内容,手术医生、麻醉医生、手术室护士等角色均可根据自己的职责和任务单独创建行动栏。

搜索栏:医务人员通过搜索栏中的预设选项,可以自由切换数据类别,并根据临床需要,查看不同时间段的不同颗粒度的数据。

0
0 311
文章 姚 鑫 · 十月 8, 2021 4m read

第三十九章 SQL命令 DROP TRIGGER

删除触发器

大纲

DROP TRIGGER name [ FROM table ]

参数

  • name - 要删除的触发器的名称。触发器名称可以是限定的,也可以是非限定的;如果限定,则其架构名称必须与表的架构名称匹配。
  • FROM table - 可选-要从中删除触发器的表。如果指定了FROM子句,则只在表中搜索命名触发器。如果未指定FROM子句,则在中指定的整个架构中搜索命名触发器。

描述

DROP TRIGGER命令删除触发器。如果要修改现有触发器,则必须先调用删除旧版本的触发器,然后再调用。

注:删除与该表关联的所有触发器。

命令是特权操作。用户必须具有%DROP_TRIGGER管理权限才能执行DROP TRIGGER。否则将导致错误,因为用户没有权限。

用户必须对指定表拥有特权。如果用户是表的所有者(创建者),则会自动授予该用户对该表的权限。否则,必须授予用户对该表的%ALTER特权。否则将导致错误,因为用户没有更改的表定义所需的%ALTER特权。

如果拥有适当的授予权限,则可以使用命令分配和权限。

在嵌入式SQL中,您可以使用方法以具有适当权限的用户身份登录:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有权限才能调用方法。

0
0 153
文章 姚 鑫 · 十月 7, 2021 6m read

第三十八章 SQL命令 DROP TABLE

删除表及其数据(可选)。

大纲

DROP TABLE table 
     [RESTRICT | CASCADE] [%DELDATA | %NODELDATA]

参数

  • table - 要删除的表的名称。 表名可以是限定的(schema.table),也可以是非限定的(table)。 非限定表名接受默认模式名。 没有使用架构搜索路径值。
  • , - 可选-限制仅允许删除没有依赖视图或完整性约束的表。如果未指定关键字,则默认设置为RESTRITION。允许删除具有依赖视图或完整性约束的表;作为表删除的一部分,任何引用视图或完整性约束也将被删除。外键约束不支持关键字选项。
  • , - 可选-这些关键字指定在删除表时是否删除与表关联的数据。默认情况下,删除表格数据。

描述

命令删除一个表及其对应的持久化类定义。如果该表是其架构中的最后一项,则删除该表也会删除该架构及其相应的持久化类包。

默认情况下,同时删除表定义和表数据(如果存在)。关键字允许指定删除表定义,但不能指定删除表的数据。

DROP TABLE删除与该表关联的所有索引和触发器。

要删除表格,必须满足以下条件:

  • 该表必须存在于当前命名空间中。尝试删除不存在的表会生成SQLCODE-30错误。
  • 表定义必须是可修改的。如果投影表的类没有定义,则尝试删除该表会生成错误。
0
0 297
文章 姚 鑫 · 十月 6, 2021 2m read

第三十七章 SQL命令 DROP ROLE

删除角色

大纲

DROP ROLE role-name

参数

  • role-name - 要删除的角色的名称。名称是一个标识符。角色名称不区分大小写。

描述

DROP ROLE语句删除角色。删除角色时, IRIS会将其从已授予该角色的所有用户和角色中撤消,并将其从数据库中删除。

可以通过调用$SYSTEM.SQL.Security.RoleExists()方法来确定角色是否存在。如果尝试删除不存在(或已被删除)的角色,则将发出SQLCODE-118错误。

权限

命令是特权操作。在嵌入式SQL中使用之前,至少需要满足以下要求之一:

  • 必须具有%Admin_Secure:USE权限。
  • 该角色的所有者。
  • 已被授予具有管理员选项的角色。

否则将导致错误(特权冲突)。

使用方法分配具有适当权限的用户:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有权限才能调用方法。

示例

下面的嵌入式SQL示例创建名为的角色,稍后将其删除:

ClassMethod DropRole()
{
	DO $SYSTEM.Security.Login("MyName","SecretPassword")
	&sql(
		CREATE ROLE BkName
	)
	if SQLCODE=-99 {
		w !,"没有创建角色的权限" 
	} else { 
		w !,"创建角色"
	}
	/* Use role */
	&sql(
		DROP ROLE BkName
	)
	if SQLCODE=-99 {
		w !,"没有删除角色的权限" 
	} else { 
		w !,"删除橘色" 
	}
}
0
0 135
文章 姚 鑫 · 十月 5, 2021 2m read

第三十六章 SQL命令 DROP QUERY

删除查询

大纲

DROP QUERY name [ FROM className ]

参数

  • name - 要删除的查询的名称。名称是一个标识符。不要指定查询的参数括号。名称可以是限定的(schema.name),也可以是非限定的(Name)。除非指定了子句,否则非限定查询名称将采用系统范围的默认架构名称。
  • - 可选-如果指定,子句将从给定类中删除查询。如果未指定此子句, IRIS将在架构的所有类中搜索查询,并将其删除。但是,如果找不到该名称的查询,或者找到多个该名称的查询,则会返回错误代码。如果删除查询导致空类,则DROP QUERY也会删除该类。

描述

DROP QUERY命令删除查询。删除查询时, IRIS将从所有已授予该查询的用户和角色中吊销该查询,并将其从数据库中删除。

要删除查询,必须具有命令指定的管理权限。如果要尝试删除具有已定义所有者的类的查询,则必须以类的所有者身份登录。否则,系统会生成SQLCODE-99错误(权限冲突)。

如果包含查询定义的类定义是已部署的类,则不能删除该查询。此操作失败,并出现错误,并显示以修改已部署的类:。

支持名称和的以下组合。请注意,

0
0 131
文章 姚 鑫 · 十月 4, 2021 3m read

第三十五章 SQL命令 DROP PROCEDURE

删除存储过程

大纲

DROP PROCEDURE procname [ FROM className ]
DROP PROC procname [ FROM className ]

参数

  • procname - procname要删除的过程的名称。名称是一个标识符。不要指定过程的参数括号。名称可以是限定的(schema.name),也可以是非限定的()。除非指定了子句,否则非限定过程名称将采用默认架构名称。
  • - 可选-如果指定,子句将从给定类中删除过程。如果未指定此子句, IRIS将在架构的所有类中搜索该过程,并将其删除。但是,如果找不到此名称的过程,或者找到多个此名称的过程,则会返回错误代码。如果删除过程导致空类,则DROP PROCEDURE也会删除该类。

描述

DROP PROCEDURE命令删除当前命名空间中的过程。删除过程时, IRIS会将其从已授予该过程的所有用户和角色中撤消,并将其从数据库中删除。

要删除过程,必须具有命令指定的管理权限。如果要尝试删除具有已定义所有者的类的过程,则必须以类的所有者身份登录。否则,系统会生成SQLCODE-99错误(权限冲突)。

如果包含过程定义的类定义是已部署的类,则不能删除该过程。此操作失败,并出现错误,并显示以修改已部署的类:。

进程名不区分大小写。

0
0 165
文章 姚 鑫 · 十月 3, 2021 3m read

第三十四章 SQL命令 DROP METHOD

删除方法

大纲

DROP METHOD name [ FROM className ]

参数

  • name - 要删除的方法的名称。名称是一个标识符。请不要指定方法的参数括号。名称可以是限定的(schema.name),也可以是非限定的(Name)。除非指定了子句,否则非限定方法名称将采用默认架构名称。
  • - 可选-如果指定,子句将从给定类中删除该方法。请注意,必须指定方法的类名(MethBonusCalc),而不是SQL名称()。如果未指定此子句, IRIS将在架构的所有类中搜索该方法,并将其删除。但是,如果找不到此名称的方法,或者找到多个此名称的方法,则会返回错误代码。如果删除该方法会导致空类,则方法也会删除该类。

描述

DROP METHOD命令可删除方法。删除方法时, IRIS会将其从已授予该方法的所有用户和角色中撤消,并将其从数据库中删除。

要删除方法,必须具有命令指定的管理权限。如果要尝试删除具有已定义所有者的类的方法,则必须以类所有者的身份登录。否则,系统会生成SQLCODE-99错误(权限冲突)。

如果包含方法定义的类定义是已部署的类,则不能删除该方法。此操作失败,并出现错误,并显示以修改已部署的类:。

支持名称和的以下组合。请注意,子句指定的是类包名称和方法名称,而不是SQL名称。

0
0 125
文章 姚 鑫 · 十月 2, 2021 6m read

第三十三章 SQL命令 DROP INDEX

删除索引。

大纲

DROP INDEX index-name [ON [TABLE] table-name]

DROP INDEX table-name.index-name

参数

  • index-name - 要删除的索引的名称。Index-name是名称的SQL版本,可以包括下划线和其他标点符号。它作为SQL映射名称列在表的Management Portal SQL Catalog Details中。
  • 或 - 可选-与索引关联的表的名称。可以使用任一语法指定表名:第一个语法使用ON子句;关键字是可选的。第二个语法使用限定名称语法。表名可以是限定的(),也可以是非限定的()。未限定的表名采用缺省模式名。如果完全省略表名, IRIS将删除找到的第一个与匹配的索引,如下所述。

描述

DROP INDEX语句从表定义中删除索引。可以使用删除标准索引、位图索引或位片索引。通过删除相应的唯一索引,可以使用删除唯一约束或主键约束。不能使用删除位图范围索引或主地图(数据/主)索引。

可能出于以下任一原因希望删除索引:

  • 打算对表执行大量的、或操作。可以对操作使用选项,而不是接受让这些操作中的每个操作都写入索引的性能开销。或者,在某些情况下,可能更可取的做法是删除索引,对数据库执行批量更改,然后重新创建索引并填充它。
0
0 187
文章 姚 鑫 · 十月 1, 2021 2m read

第三十二章 SQL命令 DROP FUNCTION

删除函数

大纲

DROP FUNCTION name [ FROM className ]

参数

  • name - 要删除的函数的名称。名称是一个标识符。不要指定函数的参数括号。名称可以是限定的(schema.name),也可以是非限定的(Name)。除非指定了子句,否则非限定函数名称将采用系统范围的默认架构名称。
  • - 可选-如果指定,子句将从给定类中删除函数。请注意,必须指定函数的类名(FuncBonusCalc),而不是SQL名称()。如果未指定子句, 将在架构的所有类中搜索该函数,并将其删除。但是,如果找不到此名称的函数,或者找到多个此名称的函数,则会返回错误代码。如果删除函数会导致空类,则函数也会删除该类。

描述

DROP Function命令用于删除函数。当删除某个函数时, IRIS会将其从已授予该函数的所有用户和角色中撤消,并将其从数据库中删除。

要删除函数,必须拥有由命令指定的管理权限。否则,系统会生成SQLCODE-99错误(权限冲突)。

如果包含函数定义的类定义是已部署的类,则不能删除该函数。此操作失败,并出现错误,并显示以修改已部署的类:。

支持名称和的以下组合。请注意,子句指定类包名称和函数名称,而不是SQL名称。

0
0 172
文章 姚 鑫 · 九月 30, 2021 3m read

第三十一章 SQL命令 DROP DATABASE

删除数据库(命名空间)。

大纲

DROP DATABASE dbname [RETAIN_FILES]

参数

  • dbname - 要删除的数据库(命名空间)的名称。
  • RETAIN_FILES - 可选-如果指定,则不会删除物理数据库文件(IRIS.DAT文件)。默认情况下,删除.dat文件以及命名空间和其他数据库实体。

描述

DROP DATABASE命令删除命名空间及其关联的数据库。

指定的是包含相应数据库文件的命名空间和目录的名称。指定作为标识符。命名空间名称不区分大小写。如果指定的DBNAME命名空间不存在, IRIS将发出错误。

命令是一个特权操作。 在使用之前,必须以%Admin_Manage资源的用户身份登录。 用户还必须拥有用于例程和全局数据库定义的资源的权限。 如果不这样做,将导致错误(权限冲突)。

使用方法为用户分配适当的权限:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有%Service_Login:Use权限才能调用方法。

不管权限如何,都不能用于删除系统命名空间。尝试这样做会导致错误。

不能用于删除当前正在使用或连接到的命名空间。尝试这样做会导致错误。

还可以使用管理门户删除命名空间。

0
0 174
文章 姚 鑫 · 九月 29, 2021 1m read

第三十章 SQL命令 DROP AGGREGATE

删除用户定义的聚合函数。

大纲

DROP AGGREGATE name

参数

  • name - 要删除的用户定义聚合函数的名称。名称可以是限定的(schema.aggname),也可以是非限定的(aggname)。非限定名称采用默认架构名称。

描述

DROP Aggregate命令删除用户定义的聚合函数(UDAF)。使用命令创建用户定义的聚合函数。

如果尝试删除不存在的UDAF,SQL会发出错误,并显示如下消息:.

删除UDAF会自动清除引用该的所有缓存查询。

0
0 135
文章 姚 鑫 · 九月 29, 2021 9m read

第二十九章 SQL命令 DISTINCT

指定仅返回不同值的SELECT子句。

大纲

SELECT [DISTINCT [BY (item {,item2})] ]  |  [ALL]
  select-item {,select-item2}

参数

  • DISTINCT - 可选-返回组合选择项值唯一的行。
  • DISTINCT BY (item {,item2}) - 可选-返回按(项)值唯一的行的选择项值。
  • ALL - 可选-返回结果集中的所有行。默认设置。

描述

可选子句出现在关键字之后、可选TOP子句和第一个之前。

子句应用于语句的结果集。它将每个不同(唯一)值返回的行数限制为一个任意行。如果未指定子句,则默认情况下显示满足选择条件的所有行。子句与不指定子句相同;如果指定,将返回表中满足选择条件的所有行。

从句有两种形式:

  • SELECT DISTINCT:为选择项值的每个唯一组合返回一行。可以指定一个或多个选择项。例如,以下查询返回一行,其中包含Home_State和值的每个唯一组合的和值:
  • :为项目值的每个唯一组合返回一行。可以指定单个项目或逗号分隔的项目列表。指定的项目或项目列表必须用括号括起来。可以在by关键字和圆括号之间指定或省略空格。选择项列表可以(但不一定)包括指定的项。例如,以下查询返回一行,其中包含和Age值的每个唯一组合的和值:
SELECT DISTINCT BY (Home_State,Age) Name,Age FROM Sample.Person
0
0 594
文章 姚 鑫 · 九月 28, 2021 4m read

第二十八章 SQL命令 DELETE(二)

示例

以下两个示例都删除了TempEmployees表中的所有行。请注意,FROM关键字是可选的:

DELETE FROM TempEmployees
DELETE TempEmployees

以下示例从Employees表中删除员工编号234

DELETE
     FROM Employees
     WHERE EmpId = 234

下面的示例从表中删除CurStatus列设置为“RETIRED”的所有行:

下面的示例使用子查询删除行:

嵌入式SQL和动态SQL示例

在下面的一组程序示例中,第一个程序创建了一个名为的表,该表有三列。下一个程序插入六条记录。后续程序使用基于指针的嵌入式删除所有英语记录,并使用动态SQL删除所有法语记录。最后一个程序显示剩余的记录,然后删除该表。

0
0 121
文章 Nicky Zhu · 九月 27, 2021 35m read

 

  目录

技术概要: Globals 1

  1. 什么是 Globals? 1
  2. 为什么要学习 Globals? 1
  3. 试一试: 访问 Globals 的三种方式 2
    1. 用前须知 2
    2. 导入和检查类定义 2
    3. 导入示例数据并检查 Globals 3
    4. 关系访问 Globals(Accessing Globals Relationaly) 5
    5. 将 Globals 作为对象访问(Accessing Globals as Objects) 6
    6. 直接访问 Globals(Accessing Globals Directly) 7
    7. 有关 Globals 的更多信息 8
  4. 使用 InterSystems IRIS API 访问 Globals 9
  5. 了解有关 Globals 的更多信息 10
    1. Globals 及其结构 10
    2. 多模型开发 10
    3. InterSystems Native API 10

技术概要: Globals

本文档向您介绍了 globals 的概念,globals是 InterSystems IRIS®数据平台的底层存储结构。我们将向您展示如何使用关系模型和对象模型访问 globals,以及如何直接访问 globals。

0
0 349
文章 Jingwei Wang · 九月 27, 2021 32m read

CodeMirror { height: auto; } .CodeMirror.cm-s-inner { background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; background-position: inherit; background-repeat: inherit; } .CodeMirror-scroll { overflow: auto hidden; z-index: 3; } .CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); } .

0
0 527
文章 姚 鑫 · 九月 27, 2021 13m read

第二十七章 SQL命令 DELETE(一)

从表中删除行。

大纲

DELETE [%keyword] [FROM] table-ref [[AS] t-alias]
     [FROM [optimize-option] select-table [[AS] t-alias]
              {,select-table2 [[AS] t-alias]} ]
     [WHERE condition-expression]

DELETE [%keyword] [FROM] table-ref [[AS] t-alias]
     [WHERE CURRENT OF cursor]

参数

  • %keyword - 可选-以下一个或多个关键字选项,以空格分隔:%NOCHECK%NOFPLAN、、、、、、。
  • - 要从中删除行的表。这不是子句;它是一个FROM关键字,后跟一个表引用。(关键字是可选的;是必需的。)表名(或视图名)可以是限定的(),也可以是不限定的()。使用架构搜索路径(如果提供)或默认架构名称将非限定名称与其架构匹配。可以指定可通过其删除表行的视图,而不是表引用,也可以指定括在圆括号中的子查询。与语句子句不同,不能在此处指定关键字。不能在此参数中指定表值函数或联接语法。
  • - 可选-子句,在table-ref
0
0 309
文章 姚 鑫 · 九月 26, 2021 4m read

第二十六章 SQL命令 DECLARE

声明游标

大纲

DECLARE cursor-name CURSOR FOR query

参数

  • cursor-name - 游标的名称,必须以字母开头,并且仅包含字母和数字。(游标名称不遵循SQL标识符约定)。游标名称区分大小写。它们受其他命名限制的约束,如下所述。
  • query - 定义游标结果集的标准SELECT语句。此选择可以包括%NOFPLAN关键字,以指定应忽略此查询的冻结计划(如果有)。此可以包括子句,可以带有或不带有子句。此可以在子句中指定表值函数。

描述

DECLARE语句声明在基于游标的嵌入式中使用的游标。声明游标后,可以发出语句来打开游标,然后发出一系列语句来检索各个记录。游标定义查询,该查询用于选择要由这些语句检索的记录。可以发出一条语句来关闭(但不是删除)游标。

作为语句,仅嵌入式支持DECLARE。对于动态,可以使用简单的语句(不带子句),也可以使用动态SQL和嵌入式SQL的组合。使用ODBC API通过ODBC支持等效操作。

声明只进(不可滚动)游标。提取操作从查询结果集中的第一条记录开始,并按顺序遍历结果集记录。一次提取只能提取一次记录。下一次提取将获取结果集中的下一条连续记录。

因为是一个声明,而不是执行的语句,所以它不设置或终止SQLCODE变量。

游标名称

游标名称区分大小写。

0
0 217
文章 Jingwei Wang · 九月 26, 2021 6m read

本文解释了如何使用 InterSystems IRIS Native 从 .NET 应用程序访问 InterSystems IRIS®数据平台 globals。IRIS Native 还允许您运行ObjectScript 方法、函数和Routine。在本文中,您首先将连接到 InterSystems IRIS。然后您将在 InterSystems IRIS 中设置和检索一个global 节点的值,并在另一个 global 节点上进行迭代。您还将调用 InterSystems IRIS 类方法。所有这些活动都将在 .NET 应用程序中执行。

为了让您体验 IRIS Native,而又不陷入细节困境,本次探索特意设计得很简洁。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 IRIS Native 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 IRIS Native 的探索与真实的情况相混淆!

Globals 简介

InterSystems IRIS 提供了一种易于使用的方法来将数据存储在持久的多维数组中。global 是存储在 InterSystems IRIS 物理数据库中的多维数组。在应用程序中,globals 到物理数据库的映射基于当前命名空间,命名空间提供一个或多个物理数据库的逻辑统一视图。

0
0 311
文章 Louis Lu · 九月 26, 2021 7m read

本技术概要( First Look)通过重点概述和一个基础的、实际操作的示例,向您介绍在 InterSystems IRIS®数据平台上使用 .NET 网关(Gateway)的基础知识。您将了解 InterSystems IRIS 如何与 .NET 程序集进行互操作,在这个示例中,您将创建一个 .NET 网关(Gateway),并从 InterSystems IRIS 中的代理类调用基础 DLL。

本文档设计简单;当您把 .NET 网关(Gateway)引入您的生产系统时,您可能需要做一些不同的事情。本文档末尾的参考资料,提供了有关在生产中使用 .NET 网关(Gateway)的详细和完整的信息。

要浏览所有的技术概要(First Look),包括其他可以在免费的云实例web 实例上执行的技术概要(First Look),请参见 InterSystems First Looks(InterSystems 技术概要)。

1. 为什么 .NET 网关(Gateway)很重要

InterSystems IRIS Object Gateway for .NET(也称为".NET 网关(Gateway)")为InterSystems IRIS 与 Microsoft .NET Framework 组件进行互操作提供了一种简便的方法。在使用网关(Gateway)导入 .

0
0 299
文章 姚 鑫 · 九月 24, 2021 4m read

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

通过视图更新

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

注意:如果视图基于分片表,则不能通过视图进行、UPDATE或操作。 尝试这样做会导致一个,其中。

若要防止通过视图进行更新,请指定。尝试通过使用创建的视图执行插入、更新或删除操作会生成SQLCODE-35错误。

要通过视图进行更新,必须具有要更新表或视图的适当权限,如命令所指定。

通过视图更新受以下限制:

  • 该视图不能是投影为视图的类查询。
  • 视图的类不能包含类参数READONLY=1
  • 视图的SELECT语句不能包含DISTINCTTOP、或子句,也不能是的一部分。
  • 视图的语句不能包含子查询。
  • 视图的语句只能列出作为列引用的值表达式。
  • 视图的语句只能有一个表引用;它不能在或子句中包含子句、联接语法或箭头语法。表引用必须指定可更新的表或可更新的视图。

子句导致或UPDATE操作根据视图定义的子句验证结果行。这可确保插入或修改的行是派生视图表格的一部分。有两个可用的检查选项:

0
0 138
文章 姚 鑫 · 九月 23, 2021 9m read

第二十四章 SQL命令 CREATE VIEW(一)

创建视图

大纲

CREATE [OR REPLACE] VIEW view-name [(column-commalist)]
       AS select-statement 
       [ WITH READ ONLY  |  WITH [level] CHECK OPTION ]

参数

  • view-name - 正在创建的视图的名称。有效的标识符,受与表名相同的附加命名限制。视图名称可以是限定的(schema.viewname),也可以是不限定的(Viewname)。未限定的视图名称采用默认架构名称。请注意,同一架构中的表和视图不能使用相同的名称。
  • - 可选-组成视图的列名、一个或多个有效标识符。如果指定,此列表括在圆括号中,列表中的项目用逗号分隔。
  • - 定义视图的SELECT语句。
  • WITH READ ONLY - 可选-指定不能通过此视图对视图所基于的表执行插入、更新或删除操作。默认情况下,允许通过视图执行这些操作,但要遵守下面描述的约束条件。
  • - 可选-指定如何通过此视图对视图所基于的表执行插入、更新或删除操作。级别可以是关键字LOCAL或。如果未指定级别,则选项默认为级联。

描述

命令定义视图的内容。定义视图的语句可以引用多个表,也可以引用其他视图。

权限

命令是特权操作。

0
0 206
文章 Jeff Liu · 九月 23, 2021 34m read

技术概要:使用 InterSystems 产品优化 SQL 性能

技术概要:使用 InterSystems 产品优化 SQL 性能

本技术概要(First Look)指南向您介绍了 InterSystems SQL 查询优化,包括查询分析工具的使用,几种索引方法以及随着时间的变化查看运行时统计数据的能力。

要浏览所有的技术概要(First Look),包括其他可以在免费的云实例或 web 实例上执行的技术概要(First Look),请参见 InterSystems First Looks(《InterSystems 技术概要》)。

0
0 262
文章 Nicky Zhu · 九月 22, 2021 16m read

本文档将帮助您使用 InterSystems IRIS®数据平台集成产品转换数据。

要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些, 请参见 InterSystems First Looks(《InterSystems 技术概要》)

数据转换和互操作性

数据转换是 InterSystems IRIS 互操作性的核心。您可以改变从一个系统传入的数据的格式和内容,以满足下游系统的要求,从而允许系统之间进行通信。简单地说,从一个系统发送的信息可以转换为另一个应用程序可以理解的信息。使用 InterSystems IRIS,可以很容易地进行数据转换的创建、测试和维护。

假设您有两个包含产品价格的零售系统。当系统 A 向其他系统发送数据时,包含了不加税的产品基准价格。但是,系统 B 需要在价格中包含地区税。InterSystems IRIS 互操作性产品中的数据转换可以在将数据发送到系统 B 之前将从系统 A 收到的价格转换为加税价格。一旦定义,数据转换将自动处理修改。

常见的转换包括:

  • 将值(value)从源信息复制到目标信息。
  • 根据源信息的(value)执行计算,并将结果复制到目标信息。
  • 为目标信息分配新的值(literal value)。
  • 重新排列数据的顺序。
0
0 265
文章 Hao Ma · 九月 22, 2021 3m read

技术概要:ODBC 和 InterSystems 数据库

如果您希望在 InterSystems IRIS®数据平台上使用 ODBC,本文将介绍如何设置它。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems 技术概要(InterSystems First Looks)。

1    ODBC: 如何在 InterSystems IRIS 中使用它
InterSystems 提供了一个完全兼容的(ODBC 3.5)ODBC 驱动程序,您可以使用它通过 ODBC 访问 InterSystems IRIS 数据库。当您安装 InterSystems IRIS 时,默认安装该驱动程序。
为了开始在 InterSystems IRIS 中使用 ODBC,您只需要在 InterSystems IRIS 实例上配置驱动程序。本技术概要(First Look)文档对这一过程进行了概述。
如果您还不熟悉 ODBC,请参见本文档末尾的 "了解更多信息" 一节中的链接,以获得更多信息。

2    用前须知
要使用这个程序,您需要一个安装了 InterSystems IRIS 实例的 Windows 系统。

0
0 614