繁体   English   中英

如何在IN子句中的SQL查询中设置Bind变量的值

[英]how to set the value of Bind variable in SQL query inside IN clause

我在视图对象中绑定了一个变量。 我正在动态更改绑定变量并执行视图对象。 问题是我怀疑绑定变量带有一些“或”。

我已经调试了该问题,还尝试打印查询。 但是仍然在调试器内部,我得到了包括绑定变量在内的相同查询。

我的查询

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代码// source是一个String变量

//例如来源=“'LCC','FIN','AR','CandD','Transactions','Creator'”;

apFileHeaderVO.setsource1(source.toString());

apFileHeaderVO.executeQuery();

我终于找到了结果。 可以使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM