Еще одна идея - вы можете сделать вставки, используя одну инструкцию INSERT, например:
INSERT ALL
INTO contactMaster
(contactID, FName, MName, LName)
VALUES
(contactID, FName, MName, LName)
INTO contactPhone
(contactPhoneID, contactID, contactType, phonenum)
VALUES
(contactPhoneID.NextVal, contactID, contactType, phonenum)
INTO contactAddress
(contactAddressID, contactID, addressType, PHN, Street, City)
VALUES
(contactAddressID.NextVal, contactID, addressType, PHN, Street, City)
(SELECT contactID.NextVal AS contactID,
'John' AS FName,
'G' AS MName,
'Garnet' AS LName,
2 AS contactType,
1234567890 AS phonenum,
1 AS addressType,
287 AS PHN,
'Blooper St' AS Street,
'New Yor' AS City
FROM dual)
Кстати, похоже, что ваши оригинальные вставки страдают от проблемы, что contactID
всегда 1
независимо от того, какая последовательность сгенерирована для contactMaster.contactID
.Если вы хотите использовать отдельные INSERT для каждой таблицы, вы можете получить последнее сгенерированное значение, обратившись к contactID.CurrVal
.