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

SQL muito longo para String


Como você usa Oracle, deve usar uma variável de ligação em vez de SQL dinâmico e, em seguida, definir o valor na coleção de parâmetros do objeto de comando. Não apenas impedirá a injeção de SQL, mas otimizará melhor sua consulta.

Além disso, parece que sua instrução SQL está faltando um espaço antes da cláusula order by. Isso poderia facilmente causar seu erro. Veja abaixo - não testado, mas deve lhe dar a ideia.
SQL = "SELECT A.cust_ky, A.incid_id, A.OPEN_TS, A.CLOSE_TS, A.REC_UPD_TS, B.wrkgp_id, A.CURR_AGNT_KY, A.incid_ttl_dn " _
    & "FROM (MAINTBLS.INCID_FAB A INNER JOIN MAINTBLS.DEPTMNT B ON A.curr_wrkgp_ky=B.wrkgp_ky) " _
    & "WHERE B.wrkgp_id= :wrkgp And (A.open_fg = 1 OR A.pend_fg = 1) " _
    & "ORDER BY A.cust_ky, A.curr_agnt_ky ASC"

   With cmd
     .ActiveConnection = conn
     .CommandText = SQL
     .CommandType = adCmdText
     .Parameters.Append .CreateParameter(, adVarChar, adParamInput, wrkgp)
   End With