I think one of the themes of the back-and-forth discussion (among community members) is that SAS is not a substitute for an OLTP (online transaction processing) system. If you have a desire to have PROC SQL behave like an OLTP system, then it might be time to migrate your datasets to a RDBMS like Oracle or Teradata. Though SAS datasets superficially look like RDBMS tables, under the hoods, SAS' treatment of them are very different. (Note that PROC SQL is a much later incarnation of what had been almost the exclusive domain of data step programming for eons). PROC SQL, probably for good reason, does not provide transactional database commands such as "begin trans", "commit trans", "rollback", etc., nor does it log transactions in a separate (DB transaction log) file. Table-locking and record-locking are handled very differently too. Additionally, parameters such as "fill factor", "percent free", etc. that are commonplace in the RDBMS world, do not have an analogue with SAS datasets. A PROC SQL update must operate within these confines and still stay true to the fact that it is manipulating a bona fide dataset, rather than a table. The lack of empty space between records, means that everything that follows the updated observation [let's say a given field goes from varchar(1) to varchar(20)], likely requires (though don't quote me on this) that everything else be shifted downwards to ensure that each observation's sort position remains unchanged.
... View more