PHP:在laravel中oracle过程的集合参数中添加自定义oracle对象
我在Oracle11g中有一个表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
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