Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL trop long pour String

Puisque vous utilisez Oracle, vous devez utiliser une variable de liaison au lieu de SQL dynamique, puis définir la valeur dans la collection de paramètres de l'objet de commande. Non seulement cela empêchera l'injection SQL, mais cela optimisera mieux votre requête.

En outre, il semble que votre instruction SQL manque un espace avant la clause order by. Cela pourrait facilement causer votre erreur. Voir ci-dessous - non testé, mais devrait vous donner une idée.

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