![]()
WARNING You're browsing the documentation for an old version of LARAVEL-OCI8. Consider upgrading your project to laravel-oci8 12.0.
Oracle Cursor
Example code on how to return a cursor using a procedure.
Note: Example code below will only work on v2.3++
SQL
-- Create the PL/SQL stored function as:CREATE OR REPLACE FUNCTION mycursor(p1 IN NUMBER) RETURN SYS_REFCURSOR AS  rc SYS_REFCURSOR;BEGIN  OPEN rc FOR SELECT city FROM locations WHERE ROWNUM < p1;  RETURN rc;END;
PHP
// via Query Builderreturn DB::select("SELECT mycursor(5) AS mfrc FROM dual"); // via PDO$pdo = DB::getPdo();$stmt = $pdo->prepare("SELECT mycursor(5) AS mfrc FROM dual");$result = $stmt->execute();return $stmt->fetchAll(PDO::FETCH_OBJ);
Oracle stored procedure implementation returning a cursor as submitted by @TiagoGoddard on issue #31
$sql = "begin    sgc.pintegracaomodoffline.ListaCidade(:pTabResultado, :pCodRetorno, :pMsgRetorno);  end;" return DB::transaction(function($conn) use ($sql){    $pdo = $conn->getPdo();    $stmt = $pdo->prepare($sql);     $stmt->bindParam(':pTabResultado', $lista, PDO::PARAM_STMT);    $stmt->bindParam(':pCodRetorno', $cod, PDO::PARAM_INT);     $stmt->bindParam(':pMsgRetorno', $text, PDO::PARAM_STR, 100);    $stmt->execute();     oci_execute($lista, OCI_DEFAULT);    oci_fetch_all($lista, $array, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC );    oci_free_cursor($lista);     return $array;});