peoplesoft - PeopleCode中行、行集的功能
问题描述
我试图更好地理解行和行集在 PeopleCode 中的用途?我已经阅读了 PeopleBooks,但仍然觉得我没有很好的理解。我希望更多地了解这些与应用程序引擎程序有关的内容。也许通过一个例子可能会有所帮助。以下是我的一些具体问题:
我了解 Rowsets、Row、Record 和 Field 用于访问组件缓冲区数据,但是对于通过 Process Scheduler 运行的独立应用程序引擎程序仍然是这种情况吗?
CreateSQL
与使用 SQL 对象/函数( 、、SQLExec
等)相比,使用这些有什么需要或优势?我经常在 AE 程序中看到CreateRowset
对象被实例化并使用.Fill
带有 SQL WHERE 子句的方法,但我不太明白为什么不使用 SQL。我在 PeopleBooks 中看到组件滚动中的 Row 对象是一行,组件滚动与行有何关系?我已经看到对具有不同滚动级别的行的引用,这只是分组和嵌套相关数据的一种方式吗?
实例化
CreateRowset
对象后,它在程序中的典型用途是什么?您将如何对行集检索到的数据执行逻辑(If、Then、Else 等),或使用它来更新数据?
我很感激你可以分享的任何见解。
解决方案
您仍然可以在独立的应用程序引擎中使用行集、行、记录和字段。应用程序引擎没有组件缓冲区数据,因为它们不在组件的上下文中运行。因此,要使用这些项目,您需要使用内置方法填充它们,例如行集上的 .fill() 或记录上的 .selectByKey()。
使用行集优于 SQL 的优点是它使 CRUD 更容易。有用于选择、更新、插入和删除的内置方法。此外,如果有多个字段,就像使用 SQL 对象一样,您不必担心会生成大量变量。另一个优点是当你进行填充时,数据被读入内存,如果你循环访问 SQL,SQL 游标会打开更长的时间。行集、行、记录和字段对象还有许多其他有用的方法,例如允许您执行编辑(验证)或从一个行集\行\记录复制到另一个。
这个问题对我来说不太清楚,但我会尝试解释。如果您有一个 Page,它将有一个 0 级行。然后它可能有多个 1 级行集。在每一个之下,它可以有一个 2 级行集。
Level0 / \ Level1 Level1 / \ / \ Level2 Level2 Level2 Level2
如果您的 level1 行中有 3 行,那么您会在与该 level1 关联的 Rowset 中找到 3 行。不确定我对此进行了解释以回答您的需要,请澄清我是否可以提供更多信息
- 通常在我创建一个行集之后,我会遍历它。访问每一行的记录,对其进行一些处理。在下面的示例中,我查看了所有锁定的帐户并在其描述前加上 LOCKED,然后更新了数据库。
.
Local boolean &updateResult;
local integer &i;
local record &lockedAccount;
Local rowset &lockedAccounts;
&lockedAccounts = CreateRowset(RECORD.PSOPRDEFN);
&lockedAccounts.fill("WHERE acctlock = 1");
for &i = 1 to &lockedAccounts.ActiveRowCount
&lockedAccount = &lockedAccounts(&i).PSOPRDEFN;
if left(&lockedAccount.OPRDEFNDESCR.value,6) <> "LOCKED" then
&lockedAccount.OPRDEFNDESCR.value = "LOCKED " | &lockedAccount.OPRDEFNDESCR.value;
&updateResult = &lockedAccount.update();
if not &updateResult then
/* Error handle failed update */
end-if;
end-if;
End-for;
推荐阅读
- javascript - 无法执行 .map whithin 功能
- php - 如何使路由上使用的中间件可以在 Laravel 的测试中工作
- ios - Firebase App Distribution 不显示我所有可用的 IOS 应用程序
- spring - 如何使我的第二个下拉列表依赖于 Springboot Thymeleaf 中的第一个下拉列表?
- postgresql - 更新 Postgres 目标中选定记录的问题 - Talend 7X Open studio
- java - MyBatis mapper 界面在 List of Maps 中保留列顺序
- node.js - 在heroku部署期间如何从删除文件夹中排除?
- xcode - 如何在 Xcode 中使用 Testflight 构建?
- image - 我有一个个人资料应用程序,其中有一张背景照片要模糊。如何将背景过滤器添加到以下装饰图像?
- python - 如何遍历关键字列表以填充 Python 中的函数?