Я пытаюсь отправить ассоциативный массив в качестве параметра для процедуры oracle, но выдает ошибку ниже
Предупреждение: oci_execute (): ORA-06550: строка 1, столбец 7: PLS-00306: неверный номер или типы аргументов при вызове 'IOBIND' ORA-06550
Но хорошо работает с индексным массивом цифр c.
Любой может помочь мне с этим?
Заранее спасибо.
$create = "CREATE TABLE bind_example(name VARCHAR(20))";
$stid = oci_parse($conn, $create);
oci_execute($stid);
$create_pkg = "
CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY VARCHAR(20);
PROCEDURE iobind(c1 IN ARRTYPE);
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg);
oci_execute($stid);
$create_pkg_body = "
CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
PROCEDURE iobind(c1 IN ARRTYPE) IS
BEGIN
INSERT INTO bind_example VALUES (c1('one'));
END iobind;
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg_body);
oci_execute($stid);
$stid = oci_parse($conn, "BEGIN arraybindpkg1.iobind(:c1); END;");
$array = array("one" => 'Test1', "two" => 'Test2', "three" => 'Test3');
oci_bind_array_by_name($stid, ":c1", $array, 3, -1, SQLT_CHR);
oci_execute($stid);
var_dump($array);