Как установить значение переменной Bind в запросе SQL внутри предложения IN - PullRequest
0 голосов
/ 17 апреля 2019

Я связал переменную в моем объекте просмотра.Я динамически изменяю переменную связывания и выполняю View Object.проблема в том, что я подозреваю, что переменная связывания принимает некоторые '' или "".

Я отладил проблему, а также попытался напечатать запрос.Но все еще внутри bebugger, я получаю тот же запрос, включая переменную bind.

мой запрос

SELECT APFileHeaderEO.ACTIVE,     
       APFileHeaderEO.CUSTOM_HEADER,     
       APFileHeaderEO.ENT_BY,     
       APFileHeaderEO.ENT_DATE,     
       APFileHeaderEO.FEEDER_ID,     
       APFileHeaderEO.FILE_HEADER_ID,     
       APFileHeaderEO.FILE_NAME,     
       APFileHeaderEO.MODIFY_BY,     
       APFileHeaderEO.MODIFY_DATE,     
       APFileHeaderEO.NEW_FILE_NAME,     
       APFileHeaderEO.SOURCE_SYSTEM,     
       APFileHeaderEO.STATUS,     
       APFileHeaderEO.TOTAL_RECORD_COUNTS,     
       APFileHeaderEO.COMMENTS,     
       APFileHeaderEO.CONTROL_TOTAL,     
       APFileHeaderEO.ACCOUNTING_DATE,     
       APFileHeaderEO.GENERIC_HEADER_ID,     
       APFileHeaderEO.GL_DATE,     
       APFileHeaderEO.GROSS_TOTAL_AMOUNT,     
       APFileHeaderEO.INSTANCE_ID,     
       APFileHeaderEO.INVOICE_RECEIVED_DATE,     
       APFileHeaderEO.NET_TOTAL_AMOUNT,     
       APFileHeaderEO.NUMBEROFINVOICES,     
       APFileHeaderEO.SOURCE,     
       APFileHeaderEO.SOURCE_FILE_PRODUCE_DATE,     
       APFileHeaderEO.VAT_TOTAL_AMOUNT,     
       APFileHeaderEO.SOURCE_FILE_NAME    
FROM  EI_AP_FILE_HEADER APFileHeaderEO where APFileHeaderEO.source in (NVL(:source1,APFileHeaderEO.source))

java code // source это строковая переменная

// например source = "LCC", "FIN", "AR", "CandD", "Transactions", "Creator" ";

apFileHeaderVO.setsource1(source.toString());

apFileHeaderVO.executeQuery();

1 Ответ

1 голос
/ 17 апреля 2019

Я наконец нашел результат.Это может быть заархивировано, используя connect by и регулярное выражение

SELECT APFileHeaderEO.ACTIVE,     
       APFileHeaderEO.CUSTOM_HEADER,     
       APFileHeaderEO.ENT_BY,     
       APFileHeaderEO.ENT_DATE,     
       APFileHeaderEO.FEEDER_ID,     
       APFileHeaderEO.FILE_HEADER_ID,     
       APFileHeaderEO.FILE_NAME,     
       APFileHeaderEO.MODIFY_BY,     
       APFileHeaderEO.MODIFY_DATE,     
       APFileHeaderEO.NEW_FILE_NAME,     
       APFileHeaderEO.SOURCE_SYSTEM,     
       APFileHeaderEO.STATUS,     
       APFileHeaderEO.TOTAL_RECORD_COUNTS,     
       APFileHeaderEO.COMMENTS,     
       APFileHeaderEO.CONTROL_TOTAL,     
       APFileHeaderEO.ACCOUNTING_DATE,     
       APFileHeaderEO.GENERIC_HEADER_ID,     
       APFileHeaderEO.GL_DATE,     
       APFileHeaderEO.GROSS_TOTAL_AMOUNT,     
       APFileHeaderEO.INSTANCE_ID,     
       APFileHeaderEO.INVOICE_RECEIVED_DATE,     
       APFileHeaderEO.NET_TOTAL_AMOUNT,     
       APFileHeaderEO.NUMBEROFINVOICES,     
       APFileHeaderEO.SOURCE,     
       APFileHeaderEO.SOURCE_FILE_PRODUCE_DATE,     
       APFileHeaderEO.VAT_TOTAL_AMOUNT,     
       APFileHeaderEO.SOURCE_FILE_NAME    
FROM  EI_AP_FILE_HEADER APFileHeaderEO where APFileHeaderEO.source in (select trim('''' from regexp_substr(:source1,'[^,]+', 1, level))     
from dual     
connect by     
regexp_substr(:source1, '[^,]+', 1, level)
is not null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...