2013-08-23 2 views
3

누군가가 Symfony2/Doctrine2에 관한 질문을하는 데 도움이 될지 궁금합니다.Symfony2/Doctrine2 Oracle Cursor 문제

우리는 오라클을 애플리케이션 용 데이터베이스로 사용하고 Zend Framework 1에서 벗어나기 위해 새로운 프로젝트를 위해 Symfony 2와 Doctrine을 사용해보기 시작했습니다.하지만 약간의 문제가있었습니다. 대부분의 데이터베이스 상호 작용에는 커서를 반환하는 호출 프로 시저가 포함됩니다. 안타깝게도 Zend DB (커스텀 서술 문, 커서와 실행 클래스를 표준 oci8 기능으로 감싸는 것)를 사용하는 것처럼 Doctrine에서 커서를 활용하는 방법을 찾지 못했습니다.

누구나 Doctrine에서 커서를 성공적으로 사용 했습니까? 그렇다면 포인터를 게시하는 것이 좋습니다. 이것이 우리가 oci8에서 구현하는 방법입니다. 그러나 연결 리소스 속성에 대한 네이티브 액세스가 없으면이 클래스를 확장/생성하지 않고이 메서드를 사용할 수 없습니다.

가독성을 위해 코드는 생략되었습니다.

$oc = oci_connect($user,$pw,$tns); 

$var = null; 
$cur = null; 

$stmt = "BEGIN schema.package.procedure(:var_in, :cur_out); END;"; 
$stid = oci_parse($oc, $stmt); 

$cur = oci_new_cursor($oc); 

oci_bind_by_name($stid, ':VAR_IN', $var); 
oci_bind_by_name($stid, ': CUR_OUT', $cur, -1, OCI_B_CURSOR); 

oci_execute($stid); 

// Now treat the cursor as a statement resource 
oci_execute($cur, OCI_DEFAULT); 

oci_fetch_all($cur, $result, null, null, OCI_FETCHSTATEMENT_BY_ROW); 

oci_free_statement($stid); 
oci_close($oc); 

//use $result for processing…. 
var_dump($result); 

많은 감사

답변

-1

나는 Doctrine2는 OUT 매개 변수에 커서를 지원에 대한 제로 정보를 발견했다.

컨테이너에서 연결 리소스를 가져올 수 있지만 직접 사용하지 않는 것이 좋습니다.

// assuming you're in a controller 
$this->get('database_connection')->getWrappedConnection(); 

ZendDB를 사용할 수 있습니다.

https://packagist.org/packages/espend/zend-db-bundle

https://github.com/Haehnchen/ZendDbBundle

: Symfony2을위한 좋은 래퍼가있다