sql >> Database >  >> RDS >> Oracle

SQL te lang voor String

Aangezien u Oracle gebruikt, moet u een bindvariabele gebruiken in plaats van dynamische SQL en vervolgens de waarde instellen in de parameterverzameling van het opdrachtobject. Het voorkomt niet alleen SQL-injectie, maar het zal uw zoekopdracht ook beter optimaliseren.

Het lijkt er ook op dat uw SQL-instructie een spatie mist vóór de order by-clausule. Dat kan gemakkelijk uw fout veroorzaken. Zie hieronder - niet getest, maar zou je een idee moeten geven.

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


  1. Sluit me aan bij Special Guest Michal Bar van het MS Access-team!

  2. hoe krijg ik een gedetailleerd foutenrapport wanneer een php-mysql-script mislukt?

  3. PHP/MySQL - een nav-menuhiërarchie bouwen

  4. Selecteer de 3 meest recente records waar de waarden van één kolom verschillend zijn