我从Oracle SQL Developer调用存储过程到php时遇到问题。我尝试调用的存储过程应该更新我的表,但是它返回错误,如标题所示,该错误为 ORA-06550 ,并且不会根据我的数据更新表中的任何内容ve输入为表格中的输入。在文件updatepatient.php
中调用存储过程,作为形式updatepet.html
的动作。 Patient_regdate 列被触发,这就是为什么我没有在过程中包括它们的原因。
这是我的表和存储过程的代码:
create table patient
(
patient_id varchar(15) primary key,
patient_name varchar(100),
patient_bdate date,
patient_breed varchar(50),
patient_gender varchar(100),
owner_name varchar(50),
owner_contact int,
patient_regdate date
);
create or replace procedure updatepatientpro(a in varchar, b in varchar, c in date, d in varchar, e in varchar, f varchar, g in int)
as
begin
update patient
set patient_name=b, patient_bdate=c, patient_breed=d, patient_gender=e, owner_name=f, owner_contact=g
where patient_id = a;
end;
/
declare
a varchar(15);
b varchar(100);
c date;
d varchar(50);
e varchar(1);
f varchar(50);
g int;
begin
a := 'P100';
b := 'Lana';
c := '10-JUN-2018';
d := 'Samoyed';
e := 'M';
f := 'Melinda Oak';
g := '01234567890';
updatepatientpro(a,b,c,d,e,f,g);
end;
/
这是我的php文件updatepatient.php
的代码:
$name = $_POST['PATIENT_NAME'];
$bdate = $_POST['PATIENT_BDATE'];
$breed = $_POST['PATIENT_BREED'];
$gender = $_POST['PATIENT_GENDER'];
$owname = $_POST['OWNER_NAME'];
$contact = $_POST['OWNER_CONTACT'];
$query1 = 'BEGIN UPDATEPATIENTPRO(:PATIENT_NAME, :PATIENT_BDATE, :PATIENT_BREED, :PATIENT_GENDER, :OWNER_NAME, :OWNER_CONTACT);END;';
$result = oci_parse($connection, $query1);
oci_bind_by_name($result, ':PATIENT_NAME', $name);
oci_bind_by_name($result, ':PATIENT_BDATE', $bdate);
oci_bind_by_name($result, ':PATIENT_BREED', $breed);
oci_bind_by_name($result, ':PATIENT_GENDER', $gender);
oci_bind_by_name($result, ':OWNER_NAME', $owname);
oci_bind_by_name($result, ':OWNER_CONTACT', $contact);
oci_execute($result);
if (oci_fetch($result)==0)
{
echo "<script type=\"text/javascript\">window.alert('Updated Successfully!');</script>";
}
else
{
echo "<script type=\"text/javascript\">window.alert('Update Failed');</script>";
}
要在HTML中更新表单的代码,updatepet.html
:
<form class="" action="updatepatient.php" method="post" id="updatepatient"> <p>
Pet's ID: <input type="text" name="PATIENT_ID" placeholder="Patient's ID" class="inputtxt" required>
Pet's Name: <input type="text" name="PATIENT_NAME" placeholder="Patient's Name" class="inputtxt" >
Pet's Date of Birth (dd-mm-yy): <input type="text" name="PATIENT_BDATE" placeholder="DOB" class="inputtxt" >
Pet's Breed: <input type="text" name="PATIENT_BREED" placeholder="Breed" class="inputtxt" >
Gender: <p><select name="PATIENT_GENDER" class="inputtxt">
<option value="F">F</option>
<option value="M">M</option>
</select> <p>
Owner's Name: <input type="text" name="OWNER_NAME" placeholder="Owner's Name" class="inputtxt" >
Owner's Contact: <input type="text" name="OWNER_CONTACT" placeholder="Owner's Contact" class="inputtxt" >
<input type="submit" value="Update" class="subbtn">
</form>