Как получить идентификатор Oracle PHP ВЕРНУТЬСЯ В - PullRequest
0 голосов
/ 23 марта 2020

Oracle 12 c + PHP

Как получить идентификатор из этого запроса:

$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";

Что я пробовал с oci_bind_by_name и RETURNING INTO

$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$executeforId = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK RETURNING dodatekid INTO :dodatekId";
$exForId = oci_parse($c,$executeforId);
oci_bind_by_name($stid, ':dodatekId', $dodatekIdForTxt);
echo $dodatekIdForTxt;

И я получил предупреждение: oci_bind_by_name (): ORA-01036: недопустимое имя / номер переменной

1 Ответ

1 голос
/ 23 марта 2020

Из документов:

При использовании связывания OUT необходимо указать maxlength , чтобы PHP выделяло достаточно памяти для хранения возвращаемого значения.

Поэтому попробуйте добавить параметры maxlength и type в привязку:

`oci_bind_by_name($exForId, ':dodatekId', $dodatekIdForTxt, -1, OCI_B_INT);`
...