I have a multiple macros those select record conditionally from database tables and insert output records into a sas datasets.
some times these macros run parallel and insert resulting records into a same dataset.
I am using proc sql to insert records, but I am losing some of the records.
is there other way we can insert processed records into a dataset.
Is SAS/SHARE available
it was designed to support such concurrent update
Is SAS/SHARE available
it was designed to support such concurrent update
How long do your inserts take? There is an option FILELOCKWAIT you can use to get SAS to wait for a locked SAS dataset to free up so in effect the inserts happen sequentially.
This option can be applied on a LIBNAME statement which you would need to use just prior to the SQL insert, then clear the LIBNAME immediately afterwards just to be safe.
The ways I know of how to achieve or simulate concurrent write to SAS tables:
1. SAS/Share
2. Filelockwait
3. Each process writes to its own table but you have a view over these tables. You then can use the view for downstream processing.
....ideally: You use a database table instead which allows concurrent write (eg. a table in Oracle).
I think a VIEW is the way to go.
On great feature it provides is the USING clause to define a libref / connection with options like FILELOCKWAIT
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.