I want to capture change in dept of employee and update salary using plsql implementation of scd. Please suggest a solution
Tried only scd1 but expecting to maintain history of department There should be new record if department changes .also which scd to be implemented if salary changes
Don't use the term SCD (slowly changing dimension) as it isn't a universally understood term, nor is it very exact. There are multiple styles of SCDs or CDC logic out there. You probably are thinking of a type-2 table common in data warehouses which historically versions rows. Even then there are a number of variations on type-2 tables. Whether they have a current flag or not, how an unexpired row's end date is represented, whether the end date is equal to the start date of the next row or 1 second or 1 day behind it, how logical deletes are represented, etc. etc.
You can do type-2 maintenance optimally with a single merge that combines the expiration of old rows and creating of new rows in one operation (logical deletes would require a second merge). But that's a bit advanced. A simpler method better to start with for lower volumes would be row-by-row PL/SQL.
Taking the simplest case and oversimplifying it (this doesn't handle deletes, or nullable columns, etc., and a handful of other details you'd need to consider, but it gives you the general idea):