Таблица обработки
Treatement (treat_id,
staff_id,
pet_id,
treat_date,
total_price)
Ваш оператор вставки:
insert into TREATMENT(TREAT_ID.nextval, --you should use sequence next val in values
PET_ID,
;TREAT_DATE, ---why you have a semi colon here???
TREAT_TIME, --- this column does not exist in Treatment table
TOTAL_PRICE)'. 'values
(:TREAT_DATE_bv,
(select p.pet_id,p.pet_name from treatment t join pet p on t.PET_ID =p.pet_id where p.pet_name=:PET_NAME),-- you didn't use place holder for pet_name and why do you need p.pet_name here???
:TREAT_TIME_bv,
:TOTAL_PRICE_bv)
Названия столбцов вышеупомянутого оператора вставки не соответствуют значениям.
Вам нужен заполнитель для имени сотрудника чтобы получить Staff_id, и ваш оператор вставки должен выглядеть так:
INSERT INTO TREATMENT(treat_id,
staff_id,
pet_id,
treat_date,
total_price)
values
(treat_id.nextval,
(select staff_id from staff where staff_name=:STAFF_NAME_bv),
(select pet_id from pet where pet_name=:PET_NAME_bv),
:TREAT_DATE_bv,
:TOTAL_PRICE_bv)
Имейте в виду, что выше стандартно sql отрегулируйте в соответствии с вашим кодом php. И еще одно примечание, что произойдет, если 2 или 3 доли pet_id такое же pet_name? Лучше иметь заполнитель cust_id, чтобы получить pet_id ie select pet_id from pet where pet_name=:PET_NAME_bv and cust_id=:CUST_ID_bv