2012-06-21 2 views
1

Я делаю очень базовую вставку в Oracle DB с предложением RETURNING INTO, чтобы получить первичный ключ. Тем не менее, я постоянно получаю нулевой доход, и я не могу понять, насколько я могу решить эту проблему. Помимо этой проблемы, строка отлично вписывается. Код ниже:PHP/ORACLE oci_bind_by_name и RETURNING INTO для получения PK

$requestParentSQL = "INSERT INTO 
      KRANE_REQUEST (
       DATE_REQUESTED, 
       DATE_EMAILED, 
       PERSON_ID, 
       AUTHORISER_ID 
       ) 
      VALUES (
       SYSDATE, 
       SYSDATE, 
       '$theUser', 
       '$theAuthoriser' 
       ) 
      RETURNING 
       KRANE_REQUEST_ID 
      INTO 
       :NEW_KRID"; 

$oracleConnection = oci_connect(_DATABASEUSERNAME, _DATABASEPASSWORD, _DATABASE); 
$oracleStatement = oci_parse($oracleConnection, $requestParentSQL); 
oci_bind_by_name($oracleStatement, ':NEW_KRID', $theNewKRID, 8); 
oci_execute($oracleStatement, OCI_DEFAULT); 
oci_commit($oracleConnection); 
oci_free_statement($oracleStatement); 
oci_close($oracleConnection); 
+0

Является ли 'NEW_KRID' int или char? По умолчанию он свяжет 'SQLT_CHAR', так как вы опустили 5-й параметр. –

+0

Datatype is Number (12), я попытался определить SQLT_CHR и SQLT_INT, а также некоторые другие параметры, чтобы увидеть, что произойдет. Но никто из них не возвращал значение. – Sebconn

+0

FYI Я попытался использовать oci_bind_by_name для вставки переменной даты в таблицу, которая отлично работает. – Sebconn

ответ

1

Неисправность. Я вызывал $ theNEWKRID вместо $ theNewKRID. Моя вина.

Смежные вопросы