Merhaba PHP-PDO ve Oracle 11g ile çalışıyorum. Ben birçok işlev ve saklanan prosedürleri var Oracle paketleri ile çalışıyorum. Ben sql * plus veya sql geliştirici IDE işlevlerinden biri için bir çağrı yapmak Şimdi, ben sonuç kümesini almak için bu komutu çalıştırın.
select package_name.function_name(param1,param2) from dual
Bu çalışıyor ve benim sonuç kümesi döndürür. Ben aynı şeyi Şimdi, ben PDO durum işleme hataları alıyorum. PHP ucundaki ile kod, bu gibi görünüyor,
$stmt = "select package_name.function_name (?,?) from dual";
$res = $this->ConnOBJ->prepare($stmt);
$param1 = '1';
$param2 = null;
$result->bindParam(1,$param1);
$result->bindParam(2,$param2);
$result->execute();
Ve ben benim log dosyasına kaydedilir ediliyor istisna geri almak.
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 904 OCIStmtExecute: ORA-00904: "PACKAGE_NAME"."FUNCTION_NAME"": invalid identifier (/var/www/php-5.3.3/ext/pdo_oci/oci_statement.c:146)' in /opt/web/dir/ora_class.php:209 Stack trace: #0 /opt/web/dir/ora_class.php(209): PDOStatement->execute() #1 /opt/web/dir/ora_class.php(298): dbPDO->execPackage() #2 {main} thrown in /opt/web/dir/ora_class.php on line 209
Ben yanlış bir şekilde sorguyu geçen muyum? Ya da ben yanlış bir şekilde parametre bağlama ediyorum?
: DÜZENLEME
Merhaba ben şimdi Oracle geçiyor verileri var ve boş değerleri geçirmek için nasıl bulduk. Benim kod artık
$stmt = "select package_name.function_name(?,?) from dual";
$res = $this->ConnOBJ->prepare($stmt);
$param1 = 1;
$param2 = null;
$res->bindParam(1,$param1,PDO::PARAM_INT);
$res->bindParam(2,$param2,PDO::PARAM_NULL);
$res->execute();
var_dump($res->fetchAll());
Ben veri geçerken Ve şimdi, ben hatayı geri almak
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 932 OCIStmtFetch: ORA-00932: inconsistent datatypes: expected CHAR got DTYCWD (/var/www/php-5.3.3/ext/pdo_oci/oci_statement.c:467)' in /opt/web/dir/ora_class.php:216 Stack trace: #0 /opt/web/dir/ora_class.php(216): PDOStatement->fetchAll() #1 /opt/web/dir/ora_class.php(305): dbPDO->execPackage() #2 {main} thrown in /opt/web/dir/ora_class.php on line 216
Ben her türlü doğru olduğundan emin yapıyorum, ama ben hala aynı hatayı tekrar alıyorum. Ben bile null değeri çıkarılır ve bir dize geçti ve PDO :: PARAM_STR için PDO tipi değişti, ama yine de bana hata veriyor.