Тъй като използвате 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