Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:在laravel中oracle过程的集合参数中添加自定义oracle对象_Php_Laravel_Oracle - Fatal编程技术网

PHP:在laravel中oracle过程的集合参数中添加自定义oracle对象

PHP:在laravel中oracle过程的集合参数中添加自定义oracle对象,php,laravel,oracle,Php,Laravel,Oracle,我在Oracle11g中有一个表 CREATE TABLE STUDENT_DETAIL( DEGREE VARCHAR2(255 CHAR) ); 我想按过程插入数据列表。因此,我创建了一个自定义对象 CREATE OR REPLACE TYPE STUDENT_DETAIL_OBJT AS OBJECT(I_STUDENT_DETAIL_DEGREE VARCHAR2 (255));/ 还有一套 CREATE OR REPLACE TYPE STUDENT_DETAIL_CO

我在Oracle11g中有一个表

CREATE TABLE STUDENT_DETAIL(  DEGREE     VARCHAR2(255 CHAR)  );
我想按过程插入数据列表。因此,我创建了一个自定义对象

CREATE OR REPLACE TYPE STUDENT_DETAIL_OBJT AS OBJECT(I_STUDENT_DETAIL_DEGREE VARCHAR2 (255));/
还有一套

CREATE OR REPLACE TYPE STUDENT_DETAIL_COLT  AS TABLE OF STUDENT_DETAIL_OBJT; /
集合将是过程的输入参数

CREATE OR REPLACE procedure SAVE_STUDENT_DETAIL(
I_STUDENT_DETAIL STUDENT_DETAIL_COLT
)
IS
BEGIN
    FOR i IN 1 .. I_STUDENT_DETAIL.COUNT
    LOOP
        BEGIN
            
        INSERT INTO STUDENT_DETAIL(DEGREE) VALUES(I_STUDENT_DETAIL (i).I_STUDENT_DETAIL_DEGREE);
        COMMIT;
            
        END;
    END LOOP;
END SAVE_STUDENT_DETAIL;
在拉威尔,我可以把这个过程称为vaia

以及从laravel 6 vaia PDO调用过程

 $pdo = DB::getPdo();
 $categories = $pdo->getNewCollection('STUDENT_DETAIL_COLT','');
 // if you
 $designaciones = ['0317031','0480458','1925866'];

 foreach ($designaciones as $value) {
       $categories->append($value); // can not ADD STUDENT_DETAIL_OBJT here
 }
 // comment this , will perfectly with 0 Data
 $stmt_rec = $pdo->prepare("begin SAVE_STUDENT_DETAIL(:p1); end;");
 $options = array("type_name" => "STUDENT_DETAIL_COLT","schema" => "");
 $stmt_rec->bindParam(':p1',  $categories, SQLT_NTY, -1, $options);
 $result = $stmt_rec->execute();
 dd($result);
我的问题是无法创建学生详细信息对象并将数据添加到集合学生详细信息对象。我越来越明白了

OCI集合::append():未知或不支持的元素类型:108


非常感谢您的帮助。

与OCI8等本机扩展相比,PDO是有限的。的PL/SQL一章中的一些“PL/SQL包装器”技术可以进一步调整以用于PDO。基本上,您可以编写一个PL/SQL过程,通过绑定标量值(数字、字符串等)从PDO调用该过程。然后,该过程构造Oracle对象并执行插入

和/或使用OCI8