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

Sachiko Wada php-users@php.gr.jp
2001年8月17日 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);
?>
よろしくお願いいたします。

AltStyle によって変換されたページ (->オリジナル) /