oci_bind_by_name

Diskutiere oci_bind_by_name im PHP Forum im Bereich Programmierung; Bindet eine PHP-Variable an einen Oracle Platzhalter Bindet die PHP-Variable variablean den Oracle-Platzhalterph_name. Ob dieser zur Ein- oder...
  • oci_bind_by_name Beitrag #1
P
PHP
Well-known member
Beiträge
997
Punkte Reaktionen
0
Bindet eine PHP-Variable an einen Oracle Platzhalter

Bindet die PHP-Variable variablean den Oracle-Platzhalterph_name. Ob dieser zur Ein- oder Ausgabe genutzt wird, wird zur Laufzeit ermittelt und der benötigte Speicherplatz reserviert.

Rückgabewert:

Ein Platzhalter.

Beispiel:

PHP:
/* oci_bind_by_name Beispiel thies at thieso dot net (980221)
  fügt 3 Datensätze in emp ein und benutzt ROWID, um die Datensätze
  direkt nach dem Einfügen zu ändern.
*/

$conn = oci_connect("scott", "tiger");

$stmt = oci_parse($conn, "
                          INSERT INTO
                                     emp (empno, ename)
                                              VALUES
                                     (:empno,:ename)
                            RETURNING
                                     ROWID
                                 INTO
                                     :rid
                                         ");

$data = array(
              1111 => "Larry",
              2222 => "Bill",
              3333 => "Jim"
             );

$rowid = oci_new_descriptor($conn, OCI_D_ROWID);

oci_bind_by_name($stmt, ":empno", $empno, 32);
oci_bind_by_name($stmt, ":ename", $ename, 32);
oci_bind_by_name($stmt, ":rid",   $rowid, -1, OCI_B_ROWID);

$update = oci_parse($conn, "
                            UPDATE
                                  emp
                               SET
                                  sal = :sal
                             WHERE
                                  ROWID = :rid
                             ");
oci_bind_by_name($update, ":rid", $rowid, -1, OCI_B_ROWID);
oci_bind_by_name($update, ":sal", $sal,   32);

$sal = 10000;

foreach ($data as $empno => $ename) {
    oci_execute($stmt);
    oci_execute($update);
}

$rowid->free();

oci_free_statement($update);
oci_free_statement($stmt);

$stmt = oci_parse($conn, "
                          SELECT
                                *
                            FROM
                                emp
                           WHERE
                                empno
                              IN
                                (1111,2222,3333)
                              ");
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    var_dump($row);
}

oci_free_statement($stmt);

/* löscht unseren "Müll" aus der Tabelle emp.... */
$stmt = oci_parse($conn, "
                          DELETE FROM
                                     emp
                                WHERE
                                     empno
                                   IN
                                     (1111,2222,3333)
                                   ");
oci_execute($stmt);
oci_free_statement($stmt);

oci_close($conn);
 
Thema:

oci_bind_by_name

Oben Unten