The update_recordset operator is a record set–based operator that updates multiple records in one trip to the server. Therefore, the power of Microsoft SQL Server can help improve the performance of some tasks. The update_recordset statement resembles delete_from in X++ and update set in SQL. It doesn't retrieve each record separately by fetching, changing, and updating. Instead, it works on an SQL-style record set on the database server side. If the update method is overridden, the implementation falls back to a classic looping construction, where one record at a time is updated. (This behavior resembles the behavior of delete_from for deletions.) Therefore, the construction works on temporary tables and whole table–cached tables by using the looping construction.
The following example updates the CustTable table and increments the value in the CreditMax column by 1000 for records where the CreditMax value is more than 0 (zero).
CustTable custTable; ttsBegin; update_recordset custTable setting CreditMax = custTable.CreditMax + 1000 where custTable.CreditMax > 0; ttsCommit;
The following example updates multiple columns.
CustTable custTable; ttsBegin; update_recordset custTable setting CreditMax = custTable.CreditMax + 1000, AccountStatement = CustAccountStatement::Always where custTable.CreditMax > 0; ttsCommit;
The following example shows that the update_recordset statement supports joins of several tables. Data from the joined tables can be used to assign values to fields in the table that is being updated.
TableEmployee tabEmpl; TableDepartment tabDept; TableProject tabProj; update_recordset tabEmpl setting currentStatusDescription = tabDept.DeptName + ", " + tabProj .ProjName join tabDept where tabDept.DeptId == tabEmpl.DeptId join tabProj where tabProj.ProjId == tabEmpl .ProjId;
Comments
Post a Comment