Perl (DBI : ODBC)을 사용하여 Teradata에 연결합니다. 실행중인 SQL 문은 procedure 문을 대체합니다. Teradata ODBC 드라이버가 예외 처리 예외 처리를 준비하도록 허용하지 않습니다. 그래서 대신 내가 $rownum = $con->do("replace procedure ... ");
Perl DBI 준비 안 함
문제는 절차를 대체 할 경우 다음 ODBC 드라이버가 오류를 생성하지 않습니다 (개체가없는 구문 오류를) 실행되지 않을 수 있다는 것입니다 어떻게 사용하려고했습니다 실행 + 준비합니다. 단순히 오류 목록이있는 레코드 세트를 반환합니다.
따라서 교체 절차 중에 오류가 발생하면 $rownum
값은 0이 아닙니다. 그러나 DBI-> do는 레코드 세트의 반환을 지원하지 않습니다. 현재 상황은 입니다. 1. 드라이버가 지원하지 않는 문 때문에 준비 + 실행을 사용할 수 없습니다. 2. 오류 목록을 가져올 수 없기 때문에 사용할 수 없습니다 (단,이 오류를 식별 할 수 있음). 0이 아닌 행 영향을받은 값에 의해).
일반적으로 : 준비 할 수없는 쿼리의 결과를 가져 오는 방법은 무엇입니까?
덕분에, 디마
연결할 때 odbc_err_handler를 사용해 보셨습니까? 나는 거기에 클로저를 두는 것을 기억하는 것처럼 보이는데, 에러를 줄 수있는 외부 변수를 설정할 것이다. perldoc DBD :: ODBC를보십시오. – albe
코드를 게시 한 경우에도 도움이 될 것입니다 (암호 및 호스트가있는 경우 제거하십시오) – alexmac
DBI : ODBC를 사용할 수 있는지 모르겠지만 DDL 문을 준비 할 수는 없을 것입니다. EXECUTE IMMEDIATE 또는 이와 유사한 것이 있습니까? – dnoeth