sql >> Databasteknik >  >> RDS >> Oracle

SQL för lång för String

Eftersom du använder Oracle bör du använda en bindningsvariabel istället för dynamisk SQL och sedan ställa in värdet i parametersamlingen för kommandoobjektet. Det kommer inte bara att förhindra SQL-injektion, utan det kommer att optimera din fråga bättre.

Det verkar också som att din SQL-sats saknar ett mellanslag före order by-satsen. Det kan lätt orsaka ditt fel. Se nedan - oprövad, men borde ge dig idén.

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. Ta bort inlägg och kommentarer från Action Scheduler

  2. SQL-frågafel

  3. Skickar en uppsättning värden till Oracle-proceduren för att använda i WHERE IN-satsen

  4. I ''mysql'' Manager för pid-fil avslutas utan uppdateringsfil