Мне нужно использовать функцию для вставки данных в Oracle. Это не мой выбор.
У меня есть функция
$toBind = [..here are all properties names];
$connection = $this->getConnection();
$connection->beginTransaction();
try{
$sql = "declare
patientID number :=0;
begin
patientID := mita.AddPatient(:lastName, :firstName,
TO_DATE(:dob, 'yyyy/mm/dd:hh24:mi:ss'), :gender, :title, :mobilePhone, :email, :address1,
:address2, :suburb, :state, :postcode, :medicalNo, :irn,
TO_DATE(:medicareExp,'yyyy/mm/dd:hh24:mi:ss'), :veteran, :nextOfKin);
commit;
update returnvalues set returnvalue = patientID where returnid=3;
end;
";
$stmt = $connection->prepare($sql);
foreach ($toBind as $param){
$value = (isset($$param) ? $$param : ( (isset($d->{$param}) && !empty(trim($d->{$param}))) ? $d->{$param} : null) );
$stmt->bindParam($param, $value);
}
$result = $stmt->execute();
$connection->commit();
$sql = "select returnvalue as patId from returnvalues where returnid=3";
$stmt = $connection->prepare($sql);
$stmt->execute();
$row = $stmt->fetch();
return (!empty($row) ? $row['PATID']: null);
}catch(\Exception $e){
$connection->rollBack();
throw $e;
}
Когда я получаю этот запрос к сетке данных, он вводит правильные данные. Когда я использую php с теми же данными, он создает новую строку, но все поля вместо автоматического увеличения равны нулю. Перед выполнением я проверил параметры в $stmt
и данные были правильно связаны.
Я использую библиотеку DBAL из Syfmony 4. База данных - Oracle. Заранее благодарим за любые подсказки.