创建或修改临时表以优化数据
系统将 InMemory 表存储在内存中,因此您可能会发现它们对于少量记录很有用。 您无法在查询中使用 InMemory 表,因为它们不存在于 SQL Server 上。 只要创建表的对象存在,InMemory 类型的临时表中的记录就会存在。
以下代码显示了如何将数据插入到临时表中的示例。
public static void main(Args _args)
{
SalesShippingLabelTmp salesShippingLabelTmp;
ttsbegin;
salesShippingLabelTmp.Label = 1;
salesShippingLabelTmp.Name = 'Finance and operations apps';
salesShippingLabelTmp.insert();
ttscommit;
while select salesShippingLabelTmp
order by Label
{
Info(strFmt('%1 %2', salesShippingLabelTmp.Label, salesShippingLabelTmp.Name));
}
}
该代码示例看起来与普通表将显示的代码类似。 InMemory 表的范围取决于它的声明方式。 如果在方法中声明它,则范围仅在方法内。
注意
您可以在所有级别声明 InMemory 表,以便它也处于类或窗体的范围内。
您可以使用 setTempData 方法将 InMemory 表从一个对象链接到另一个对象,从而创建新的实例链接,如下所示:
SalesShippingLabelTmp salesShippingLabelTmp2;
salesShippingLabelTmp2.setTmpData(salesShippingLabelTmp);
您可以通过使用 salesShippingLabelTmp2.setTmp(); 的 setTmp 方法将所有表用作 InMemory 表。
若要将 InMemory 表用作窗体数据源,您需要:
- 将
InMemory表添加为窗体数据源。 - 使用
setTempData在InMemory表窗体数据源的Init方法中将数据配置到窗体数据源的记录集,如下所示:
[DataSource]
class SalesShippingLabelTmp
{
public void init()
{
super();
salesShippingLabelTmp.setTmpData(mySalesCalcLabel.parmSalesShippingLabelTmp());
}
}
该代码示例显示如何将 InMemory 表数据设置到窗体数据源。 当您在 Init 以外的方法中使用 setTmpData 方法时,在数据源上使用 executeQuery 进行跟进。
使用 TempDB 表类型创建临时表
TempDB 临时表对于大量数据很有用,您可以在 SQL Server 中的 TempDB 表中创建它们。 您可以创建索引来优化性能,类似于对财务和运营应用中的常规表执行的操作。
使用 TempDB 表与使用 InMemory 表类似,但存在一些关键差异,其中 TempDB 表:
- 当您将数据从一个
TempDB表链接到另一个表时,需要linkPhysicalTableInstance方法,而不是setTmpData的InMemory方法。 - 可以是全局数据,也可以根据公司数据。
- 支持交易记录范围或交易记录跟踪系统 (TTS)。
- 支持索引。
- 支持联接到常规表。
以下代码显示 TempDB 表的使用,它类似于 InMemory 表的使用,linkPhysicalTableInstance 用于将数据链接到新实例。
public static void main(Args _args)
{
SalesIdTempTable salesIdTempTable;
ttsbegin;
salesIdTempTable.SalesId = 'SO-1';
salesIdTempTable.insert();
salesIdTempTable.SalesId = 'SO-2';
salesIdTempTable.insert();
ttscommit;
while select salesIdTempTable
order by SalesId
{
Info(strFmt('%1', salesIdTempTable.SalesId));
}
SalesIdTempTable salesIdTempTable2;
salesIdTempTable2.linkPhysicalTableInstance(salesIdTempTable);
}
您可以使用可扩展数据安全 (XDS) 框架中的 TempDB,为用户生成一个包含允许数据的临时表。 然后,您可以根据刷新频率进行更新。
当用户关闭其会话时,系统会删除 TempDB 表中的所有数据。