Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL za długi dla String

Ponieważ używasz Oracle, powinieneś użyć zmiennej bind zamiast dynamicznego SQL, a następnie ustawić wartość w kolekcji parametrów obiektu polecenia. Nie tylko zapobiegnie to wstrzykiwaniu SQL, ale także lepiej zoptymalizuje Twoje zapytanie.

Ponadto wygląda na to, że w instrukcji SQL brakuje spacji przed klauzulą ​​order by. To może łatwo spowodować twój błąd. Zobacz poniżej – nieprzetestowane, ale powinno dać ci pomysł.

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. Biała księga statystyczna CBO

  2. Jak zmienić nazwę węzła Oracle XMLTYPE?

  3. Jak obsługiwać/używać znaków specjalnych, takich jak procent (%) i ampersand (&) w zapytaniach Oracle SQL

  4. Liczba wierszy w Oracle SQL Select?

  5. Zmodyfikuj zapytanie widoku zmaterializowanego