안녕하십니까, PHP-PDO와 Oracle 11g를 사용하고 있습니다. 필자는 많은 기능과 저장 프로 시저가있는 Oracle 패키지로 작업하고 있습니다. 이제 sql * plus 또는 sql 개발자 IDE에서 함수 중 하나를 호출하면이 명령을 실행하여 결과 집합을 가져옵니다.PHP의 오라클 패키지에 함수/프로 시저 호출하기
select package_name.function_name(param1,param2) from dual
잘 작동하고 결과 세트를 반환합니다. 이제 동일한 작업을 수행 할 때 PDO 예외 처리에서 오류가 발생합니다. PHP에서 끝나는 코드는 다음과 같습니다.
$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();
그리고 다시 로그 파일에 기록되는 예외가 발생합니다.
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
잘못된 방식으로 쿼리를 전달합니까? 아니면 매개 변수를 잘못된 방식으로 바인딩합니까?
: 편집안녕하세요 지금은 오라클을 겪고 데이터를 가지고 있고, null 값을 전달하는 방법을 발견했다. 내 코드는 지금
$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());
내가 데이터를 통과 할 때 지금은
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
가 나는 확실히 모든 종류 맞아 제작하고 오류를 다시 얻을,하지만 난 여전히 같은 오류를 다시 얻고있다. null 값을 제거하고 문자열을 전달하고 pdo 유형을 PDO :: PARAM_STR로 변경했지만 여전히 오류가 발생합니다.
글쎄, 스키마의 다른 테이블을 쿼리하고 결과 집합을 반환하므로 자격 증명이 작동합니다. – macha
기능 세부 사항 –
를 패키지에 게시 하시겠습니까? – macha