У меня есть функция oracle, которая имеет массив в качестве параметра, как показано ниже:
addGroups($empGroupId, $employees);
и добавляет группы сотрудников, но этот параметр массива определяется как пользовательский тип в данных oracle основание, как показано ниже:
CREATE OR REPLACE TYPE EMPLOYEES."ARR_VAR2" is table of varchar2(32000);
Я пытался вызвать эту функцию в php и передать этот массив, как показано ниже:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
//recieving parameters
$empGroupId= $request->ID;
$employees= $request->EMPLOYEES;
//establish connection
$conn = oci_connect("EMPLOYEES", "****", "ip/orcl");
//test connection
if ($conn)
{
if($empGroupId!=NULL && $employees!=NULL)
{
$stmt = "begin :resu :=addGroups(:empGroupId,:employees, :result ); end;";
$stid=oci_parse($conn,$stmt);
oci_bind_by_name($stid, ":empGroupId", $empGroupId);
oci_bind_array_by_name($stid, ":employees", $employees, 250, 250, SQLT_VCS );
oci_bind_by_name($stid, ":result", $result, 40);
oci_bind_by_name($stid, ":resu", $resu, 100);
oci_execute($stid);
oci_free_statement($stid);
$result1['output'] = array("result" => $result);
return $result1;
else
{
//connection failed
echo 500;
}
, но он возвращает эту ошибку:
ORA-01458: недопустимая длина внутри переменной символьной строки
Я также попробовал новую коллекцию oci, как показано ниже:
$stmt = "begin :resu :=addGroups(:empGroupId,:employees, :result ); end;";
$stid=oci_parse($conn,$stmt);
oci_bind_by_name($stid, ":empGroupId", $empGroupId);
$IDs= oci_new_collection($conn, 'ARR_VAR', 'EMPLOYEES');
foreach($employees as $emp)
{
$IDs->append($emp);
}
oci_bind_by_name($stid, ":employees", $IDs, -1, SQLT_CHR );
oci_bind_by_name($stid, ":result", $result, 40);
oci_bind_by_name($stid, ":resu", $resu, 100);
oci_execute($stid);
oci_free_statement($stid);
$result1['output'] = array("result" => $result);
return $result1;
else
{
//connection failed
echo 500;
}
, и это дает мне эту ошибку:
Предупреждение : oci_new_collection (): ORA-22318: тип ввода не является типом массива
Неустранимая ошибка : Неопределенная ошибка: вызов функции-члена append () для логического значения
есть ли способ решить эту проблему
заранее спасибо