[PHP-users 1227] OCIBindByName を使用したスペースのinsert

Sachiko Wada php-users@php.gr.jp
Fri, 17 Aug 2001 20:39:25 +0900


和田 と申します。

apache 1.3.19
oracle 8.1.5
php 4.0.6

を用いて開発をしています。

OCI の bind 機能を用いて DBにデータを投入しようとしているのですが、
' '(空白) をデータとして渡すと、NULL と解釈されるらしく、
NOT NULL のカラムでは
  OCIStmtExecute: ORA-01400:(XXXX)にはNULLは挿入できません。
というエラーが出ます。

bind を用いて ' ' (空白) を設定するには、どうしたらよいのでしょうか?


以下、使用したサンプルコードです。
--------------------------------------
create table test
(
    col1 number(3),
    col2 varchar2(3) not null
);

--------------------------------------
<?php
$con = OCILogon('xxxx', 'xxxx', 'xxxx');

$sql = "insert into test values(:COL1, :COL2)";
$stmt = OCIParse($con, $sql);

OCIBindByName($stmt, ":COL1", &$col1, 2);
OCIBindByName($stmt, ":COL2", &$col2, 3);

$col1 = 12;
$col2 = ' ';

OCIExecute($stmt);

OCIFreeStatement($stmt);
OCILogoff($con);
?>

よろしくお願いいたします。