何时使用基于集的语句和基于行的操作

已完成

基于集的语句用于更新、插入或删除表中的多条数据记录。

基于行(或非基于集)的操作用于更新、插入或删除表中的单条记录。

使用基于集的查询可通过减少对数据库进行的调用数来显著提高性能。

基于行的操作需要对要操作的每个记录的数据库进行调用,而基于集的语句仅对数据库调用一次。

例如,如果您需要更新表上的 100 条记录,基于行的操作将调用更新方法并调用数据库 100 次以更新所有记录。 基于集的语句将调用 update_recordset 方法一次,然后调用数据库一次以更新所有记录。

可使用的基于集的语句的三个示例为:

  • Update_recordset - 用于一次更新多条记录。
  • Delete_from - 用于一次删除多条记录。
  • Insert_recordset - 用于将多条记录从一个或多个表复制到另一个表中。

update_recordset 可以更新表上的多个字段。 您还可以指定一个 where 子句以确定更新哪些记录。 下面是 update_recordset 的一个示例,您声明表并调用 update_recordset 以仅针对具有等于“US”的 CustGroup 字段的客户更新客户 PaymModeCurrency 字段。请注意,如果覆盖更新方法,update_recordset 将一次调用一个更新方法,而不是一次调用所有更新方法。

CustTable custTable;
Update_recordset custTable
Setting
	 PaymMode = 'Check',
	 Currency = 'USD'
Where custTable.CustGroup == 'US';

delete_from 方法与 update_recordset 方法类似。 您可以同时从表中删除多条记录,并且可以使用 where 子句来确定要删除的记录。 在以下示例中,将声明表,然后调用 delete_from 以删除客户的 CustGroup 字段等于“US”的所有记录。

CustTable custTable;
Delete_from custTable
	Where custTable.CustGroup == 'US';

Insert_recordset 允许您将多条记录从一个表插入到另一个表中。 您可以使用 where 子句来确定要插入的记录,并且可以使用变量进行插入。 在以下示例中,声明将插入的表和要从中提取数据的表。 然后,调用 insert_recordset 以将数据插入到在括号中列出的字段中。 然后,按字段在括号中列出的顺序调用暂存表中的字段。 现在,这些字段将插入到 CustTable 中,其中暂存客户的 CustGroup 字段等于“US”。

CustTable custTable;
CustCustomerBaseStaging custCustomerBaseStaging;

Insert_recordset custTable (accountNum, custGroup, paymMode, currency)
	Select CustomerAccount, CustomerGroupId, PaymentMethod,SalesCurrencyCode
		From custCustomerBaseStaging
		Where custCustomerBaseStaging.CustGroupID == 'US';