필자는 hdbsql에 SAP HANA의 명령 줄 도구를 연결하는 perl 스크립트를 작성했습니다. Hdbsql to SAP Hana는 sqlplus를 Oracle에 제공합니다.
hdbsql에서 sql 쿼리를 실행하는 데 백틱을 사용하고 있는데 배열의 쿼리 결과를 캡처하고 있습니다. 다음은이 작업을 수행하는 코드 조각입니다.
my $sql_statement = 'SELECT some_column FROM some_table WHERE
some_condition';
my $hdb_sql = "/PROGRA~1/sap/hdbclient/hdbsql.exe";
my $connection = "-i 11 -n 100.450.10.20:31115 -u myUser -p myPwd -j -F
\"|\"";
my @queryResults = `$hdb_sql $connection $sql_statement`;
여기서 내가 문제를 겪고있는 곳입니다. 쿼리가 성공적으로 실행되면 hdbsql 반환 코드는 0이고 반환 코드는 perl 변수 "$?"에 저장됩니다. 또한 오류이의 경우 zero.But되어 내가 관찰 한 것입니다 : 쿼리가 난 다음을 얻을 일부 구문 문제가
오류 메시지입니다 :
* 257: sql syntax error: incorrect syntax near "SELECTS": line 1 col 1 (at
pos 1) SQLSTATE: HY000
우리가 볼 것을 하나의 SQL 오류 코드는 위의 메시지에서 257입니다. 그러나 만약 내가 펄 변수 "$?"를 출력한다. 오류/리턴 코드로 256을 제공합니다. 마찬가지로
, 잘못된 열 이름을
- 하나의 SQL 오류 코드는 260이지만 펄이 코드가 집계 누락 또는 하나의 SQL 오류 코드를 그룹화 1024
- 을 276 만 입니다 반환 펄 리턴 코드는 함수 하나의 SQL 오류 코드가 316 하지만 펄 리턴 코드가 잘못 테이블 이름 하나를 들어 15360.
- 인에서 인수의 잘못된 번호는 5120
- 입니다
가 왜 오류 코드가 그 것이다 ... SQL 오류 코드는 259이지만 펄은 코드 등 768
이며 반환 "$?" 실제로 하나 이상의 SQL 반환 코드와 차이가 있습니까? 내 스크립트에서 나는 실제 하나 오류 코드를 인쇄하고 싶다. 내가 펄에서 어떻게해야 할까? 두 코드 사이에 수학적 관계가 있습니까?
저는 이것을 백과 사전을 사용하는 데 열중하고 있습니다. 시스템(), perl 파이프, perl DBI 또는 다른 모듈을 사용하여 hdbsql 쿼리를 실행하고 싶지 않습니다.
나는이 포럼에서 묻는 비슷한 질문을 여러 차례 보았지만 나의 경우에 대해서는별로 도움이되지 않았다.
의견/답변에 감사드립니다. 고맙습니다!!!!
약간 관련 : http://stackoverflow.com/questions/18640737/why-arent-i-picking-up-the-exit-status-from-my-child-process/ 18641283 # 18641283 – mob