In a full join having the fastest way to calc each line may be important. I'm pretty sure that
selectnvl(T.PK, P.PK) as PK, nvl(T.FK, P.FK) AS FK, P.pNo, P.pDesc, T.tno, T.tDesc;
from Parts P fulljoin Tools T on P.PK = T.PK and P.FK = T.FK intocursor csrToolsParts
is easier on resources and for my taste on the eyes as well ;-)