sql >> Databáze >  >> RDS >> Oracle

SQL je pro řetězec příliš dlouhý

Protože používáte Oracle, měli byste místo dynamického SQL použít proměnnou vazby a poté nastavit hodnotu v kolekci parametrů objektu příkazu. Nejen, že zabrání SQL Injection, ale lépe optimalizuje váš dotaz.

Také to vypadá, že ve vašem příkazu SQL chybí mezera před klauzulí order by. To může snadno způsobit vaši chybu. Viz níže – netestováno, ale mělo by vám dát představu.

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. jednoduchý modul pro ověření přihlášení uživatele s uzlem

  2. MySQL vybere název sloupce a hodnotu jako pole

  3. Jak nastavit asynchronní replikaci z Galera Cluster na samostatný server MySQL s GTID

  4. Dotaz MySQL není vložen, když proměnná PHP obsahuje jednoduché uvozovky