Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-01002:busca fora da sequência C++


Sua busca está falhando porque a abertura, declaração e preparação falharam antes desse ponto, mas você não verificou nenhum erro deles. Se você fizer isso, você obterá um ORA-00911: invalid character erro, por causa disso:
    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1;");

A afirmação que constrói é
select supplierNumber, supplierName from supplier where supplierNumber < > 1;

Mas então você faz:
exec sql PREPARE S1 FROM :sql_statement;

Assim como as chamadas dinâmicas de SQL e JDBC, essa preparação pode receber apenas uma única instrução. O ponto e vírgula no final de sua string construída é um separador de instrução que não tem nenhum significado neste contexto e é inválido no que diz respeito ao analisador.

Então, basta remover esse ponto e vírgula:
    strcpy((char *)sql_statement.arr,"select supplierNumber, supplierName ");
    strcat((char *)sql_statement.arr,"from supplier ");
    strcat((char *)sql_statement.arr,"where supplierNumber < > 1");

e adicione uma verificação de erro após cada exec sql .