oci_execute():ORA-06550:第1行,第7列:PLS-00306:错误的参数数目或类型

时间:2019-12-11 22:57:16

标签: php html oracle stored-procedures

我从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>

0 个答案:

没有答案