问题标签 [objectscript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
275 浏览

intersystems-cache - 使用“csp 系统间缓存对象”获取当前 url

因为我可以使用 csp 缓存语言获取当前 url?不使用 mv。

我也想获取当前域,即如果我有这个网址 www.midominio.hn / assets / hola.csp

获取 www.midominio.hn

0 投票
1 回答
590 浏览

sql - InterSystems 缓存 - 如何插入连接表?

以下 objectscript 将创建以下 SQL 表:

对象脚本类

Parent_Children 表和列:

当 Parent 通过%Save()命令保存在 objectscript 中并且 Parent 的 children 属性有一个元素时,会在这个连接表中自动创建一行。该ID列的值类似于"15||1",Parent列具有该行的主键,ParentChildren列具有该子行的主键。

在 SQL 中,如何为该表创建插入语句?我不知道如何为 ID 列设置值。

0 投票
2 回答
330 浏览

mumps - 将数组中的两个项目一起分配 Objectscript/Mumps

只是想问一下是否有办法将两个项目放在一起,例如,如果我从一个包含 20 个项目的大列表中生成 4 个随机购物清单,这些项目都存储在我的 global(array) 中,如果我可以将它除以 4 和随机将我知道的 4 个较小的列表放在一起在 c# 中我可能会使用“随机”库在 Mumps objectscript 中是否有类似的东西?

0 投票
2 回答
527 浏览

shell - 在 Unix 服务器上的 Intersystems Caché 中使用 $SYSTEM.SQL.Shell() 仅返回 %SYS.ProcessQuery 的结果

背景

你好,

我使用基于 Unix 的应用程序,该应用程序使用 Intersystems Caché 数据库。由于我对 Caché 不太熟悉,直到最近我才发现我可以打字……

...进入数据库。从这里,我发现我可以访问许多内容,例如%FREECNT报告、^DATABASE例程(查看/修改数据库的大小和其他属性)和$SYSTEM.SQL.Shell().

自从找到 以来$SYSTEM.SQL.Shell(),我发现了许多可以用来获取数据库信息的东西,特别是使用该%SYS.ProcessQuery表运行的进程。

我能够成功运行查询 - 例如:

上面的查询将以这种格式返回结果:

问题

考虑到上面确定的背景,我正在寻找一种方法来仅返回没有“SQL 命令行外壳”介绍文本、列名或行计数页脚的结果。当我在 Unix 中编写 .ksh 脚本以连接到 Caché 并运行查询时,如上所示,我返回结果以及以下我不想包含的文本:

附加信息

我意识到我可以使用 Unix 命令来过滤掉一些使用awkand的文本sed,但我正在寻找一些可能内置的更简单/更清洁的方法。也许有一个silentorno_column_names标志的东西,比如这个LINK中的例子。

我的最终游戏是运行一个脚本,该脚本将从查询中获取信息,然后在满足某些阈值时使用该信息对数据库进行更改。最终,我想安排脚本定期运行,因此我需要在服务器上进行所有处理,而不是创建一个单独的客户端应用程序来绑定到数据库。

0 投票
2 回答
2574 浏览

sql - 如何查询 Intersystems Caché 以获取数据库和许可证属性?

问题

你好,

我正在尝试确定是否可以查询 Intersystems Caché 以获取数据库属性和许可证属性。对于数据库,我最感兴趣的是当前大小最大大小块大小与数据库关联的目录等属性。对于许可证,我是总授权当前可用最小可用当前活动用户最大活动用户

背景

我知道可以使用系统管理门户获得有关数据库和许可证的详细信息,但我正在尝试自动化一些依赖这些详细信息的操作。

我知道 %FREECNT 实用程序可用于显示数据库的空间统计信息,但我能够使用此实用程序获取所需信息的唯一方法是使用AWK或编写脚本SED(系统在 Unix服务器),我想避免这种情况,因为我不像我想的那样精通 Unix 脚本。

我知道^DATABASE例程和函数是可用的,但我也$SYSTEM.License.ShowCounts()必须使用这些来消除我不需要的返回文本。在所有情况下,直接 SQL 将返回一组我可以迭代的数据,这将消除例程/函数中包含的无关文本。AWKSED

附加信息

我已经编写了类似于下面的查询,我希望数据库和许可证有等效的表,这将允许我进行相同的访问:

我无权访问 Caché Studio,所以我不得不在服务器上使用命令行。我知道我可以使用 SQL.Shell 输入 SQL 语句,并且从文档中看,我可以从命令行创建例程,但我还没有找到任何文档可以让我为例程输入多行语句命令行。如果那不可能,那么我可能无法在我的解决方案中使用例程。

谢谢您的帮助。

0 投票
2 回答
289 浏览

syntax - 如何通过引用过程来传递全局或进程私有全局

假设我有 Caché ObjectScript 过程,它期望接收一个引用数组参数:

我可以通过使用点语法引用常规数组来调用该过程:

但是,当我尝试使用全局引用执行此操作时,使用点语法会出现语法错误:

通过引用 ObjectScript 过程来传递全局数组的正确方法是什么?我还希望能够传递进程私有全局变量(^||Array约定)

0 投票
2 回答
454 浏览

intersystems-cache - Caché ObjectScript 中的 Try-Finally 等效

我正在寻找与流行的 Try-Finally 异常清理模式等效的语义,例如为什么使用 try ... finally 而不使用 catch 子句?

这个想法是,无论代码是成功还是失败,您都有需要执行的清理步骤,但清理代码不应干扰报告和处理错误。仍然出现问题,异常应该仍然传播。

我想写这样的东西:

但是 ObjectScript 中的 TRY...CATCH 语法不支持 FINALLY 子句。

尤其重要的是,通常由 finally 块完成的这两件事都是正确的:

  • 清理代码总是在执行返回给调用者之前运行,无论是在发生错误时还是在一切正常运行时。
  • 如果发生错误,原始错误及其代码位置、上下文和堆栈将通过调用堆栈传播到原始调用者。清理代码不应干扰调试。

我不能简单地使用常规的 TRY...CATCH 块,因为 CATCH 会吃掉异常并阻止正确的错误上下文向上传递。也许有一种方法可以在不弄乱错误上下文的情况下重新抛出原始异常?

0 投票
2 回答
1037 浏览

intersystems-cache - Intersystems caché - 以编程方式创建新类

是否可以编写 ObjectScript 方法,该方法将在命名空间中创建新类并编译它?我的意思是以编程方式创建新类并存储它。如果是这样,我可以稍后使用 ObjectScript 编辑这个类(并重新编译)吗?

原因:我在字符串变量中定义了类结构,我需要根据这个字符串将新类添加到命名空间。

0 投票
1 回答
276 浏览

intersystems-cache - Intersystems caché - sql 存储定义

如何设置 %Dictionary.StorageSQLMapDefinition 类的 Name 属性?我有这个代码:

而且我不知道如何设置 storMaps.Name。Name 属性的数据类型。根据文档,是 %Dictionary.SQLIdentifier。但我不知道如何设置此属性。我收到一个错误:

SQL 映射类型无效

0 投票
2 回答
343 浏览

intersystems-cache - 系统间缓存 - sqlStorage

我需要将我的全局映射到 sql。我有这样的全局结构:

具体来说:

"mltab", "main","Dta""Index"是常数。idRow是我的主键,idCol对我来说并不重要,但会给我带来问题,因为它可以改变。

我需要为某些表列(映射类属性)获取类似colId=2^index="t|1320|30|62913"的值。我映射的其他值。


我当前的代码如下所示:

我认为我的问题可能出在数据节点定义中:

但可悲的是,我对这个问题还不够熟悉......所以有人可以帮我hyperlink在我的 sql 表中获取列,其值为colId=2^index=t|1320|30|62913id 3 的行和colId=4^index=nextIndexVal行 id 4 的值吗?