My PHP code:
JavaScript
x
$sql = '
begin
get_citizen_info(:n_id, :c_name, :c_date_of_birth, :c_vehicle_number, :success);
end;';
$result = oci_parse($conn, $sql);
oci_bind_by_name($result, ':n_id', $_POST['n_id'], -1);
oci_bind_by_name($result, ':c_name', $c_name, 50);
oci_bind_by_name($result, ':c_date_of_birth', $c_date_of_birth, 50);
oci_bind_by_name($result, ':c_vehicle_number', $c_vehicle_number, 50);
oci_bind_by_name($result, ':success', $success, 8);
oci_execute($result);
My procedure
JavaScript
create or replace procedure get_citizen_info(n_id number,
c_name out varchar,
c_date_of_birth out varchar,
c_vehicle_number out varchar,
success out boolean)
is
c_id number;
begin
success := true;
begin
select name, date_of_birth, vehicle_number into c_name, c_date_of_birth, c_vehicle_number
from citizens
where national_id = n_id;
exception
when no_data_found then
success := false;
end;
end
Error
JavaScript
<br /><b>Warning</b>: oci_execute(): ORA-06550: line 3, column 1:PLS-00306: wrong number or types of arguments in call to 'GET_CITIZEN_INFO'ORA-06550: line 3, column 1:PL/SQL: Statement ignored in <b>C:xampphtdocsget_citizen_info(add-case).php</b> on line <b>15</b><br />false
I am proving correct number of argument so what seems to be wrong here?
Advertisement
Answer
You are providing the correct number of arguments, but not necessarily the correct type of arguments. You might need to specify at least the first and last parameter types:
JavaScript
oci_bind_by_name($result, ':n_id', $_POST['n_id'], -1, OCI_B_INT);
oci_bind_by_name($result, ':c_name', $c_name, 50);
oci_bind_by_name($result, ':c_date_of_birth', $c_date_of_birth, 50);
oci_bind_by_name($result, ':c_vehicle_number', $c_vehicle_number, 50);
oci_bind_by_name($result, ':success', $success, 8, OCI_B_BOL);