OCI Bind liefert ORA 01461

OCI Bind liefert ORA 01461

am 05.12.2006 20:43:31 von Stefan Kuhn

Hallo NG,

habe ein Problem bei der Verwendung mit oci_bind_by_name.

Folgende einfache INSERT Query soll ausgeführt werden:

$oci = $db_handle = oci_pconnect('dbuser','dbpw','SID');
$query = "INSERT INTO dbtable VALUES(:1,:2,:3,:4,:5,:6,:7,SYSDATE)";
$stmt = oci_parse($oci,$query);

Soweit so klar.
Diese Platzhalter sollen zum Füllen dienen.

$one = 54062;
$two = 10;
$three = 0;
$four = '3hc1lguie3bkikfohfcf4eiu21';
$five = 'USER';
$six = 10;
$seven = 'USER::__construct';

oci_bind_by_name($stmt,':1',$one);
oci_bind_by_name($stmt,':2',$two);
oci_bind_by_name($stmt,':3',$three);
oci_bind_by_name($stmt,':4',$four);
oci_bind_by_name($stmt,':5',$five);
oci_bind_by_name($stmt,':6',$six);
oci_bind_by_name($stmt,':7',$seven);

Diese Notation funktioniert auch einwandfrei.

Wenn ich aber den Platzhalter aus einer Variablen beziehen:

$args = array(
'1' => 54062,
'2' => 10,
'3' => 0,
'4' => '3hc1lguie3bkikfohfcf4eiu21',
'5' => 'USER',
'6' => 10,
'7' => 'USER::__construct'
);
foreach($args as $key => $value){
oci_bind_by_name($stmt,":$key",$value);
}

Bekomme ich den Oracle Fehler: ORA-01461: can bind a LONG value only for
insert into a LONG column

Bis auf das ich den Platzhalter geändert habe, ist alles gleich geblieben.
NG Suche hat auch nix gebracht. Auch wenn ich die Länge beim
Funktionsaufruf mit angebe kommt dieser Fehler. Hat jemand eine Idee?

Vielen Dank
Stefan