PHP Version 4.4.9 / oci8 Revision: 1.273 / Oracle Version 10.1
で oci_bind_by_name($stmt, ‘:dummy’, $dummy);
$dummy が NULLの時、oci_bind_by_nameはなぜかエラーとなります。
エラー内容:
Allowed memory size of 8388608 bytes exhausted (tried to allocate -153092211 bytes)
ググっても対策方法が出て来ないのでトライ&エラーで対応。
$dummy = “”;
$dummy = null;
どれもだめで、以下にするとOK
$dummy .= “”;
空文字を連結するとなぜかOKとなる。多分変数$dummyのメモリー上に
何かがセットされて、oci_bind_by_nameの方で正しくNULLが認識された!?
$sql = “select sysdate from dual where sysdate > :dummy”;
if($dummy == “”){
$dummy .= “”;
}
$stmt = oci_parse($Conn,$sql);
oci_bind_by_name($stmt, ‘:dummy’, $dummy);