Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL е твърде дълъг за String

Тъй като използвате Oracle, трябва да използвате свързваща променлива вместо динамичен SQL и след това да зададете стойността в колекцията от параметри на командния обект. Не само ще предотврати SQL инжектиране, но ще оптимизира по-добре вашата заявка.

Освен това изглежда, че във вашия SQL оператор липсва интервал преди клаузата за ред. Това лесно може да причини вашата грешка. Вижте по-долу – нетествано, но трябва да ви даде идеята.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разрешите ORA-29283:невалидна файлова операция

  2. Как можем да получим интервала от 15 минути?

  3. Oracle настрои NLS_LANG по подразбиране

  4. Oracle отменя ли транзакцията при грешка?

  5. Oracle счита празните низове за NULL, докато SQL Server не го прави - как се справя най-добре с това?