oracle传递字符串列表作为参数

时间:2014-11-23 18:58:24

标签: sql oracle

我想将字符串列表作为参数传递

当我的应用程序生成我的查询时,我有这个sql代码:

SELECT * FROM Transfers TRANSFERS 
 LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY  
  WHERE TRANSFERS.ORDERNBR in ('[236359981, 236359982, 236359983]') 

这是我使用List

的jave中的源代码
 public List<SupEntity> sendSup(List<String> listOrderNumber)
        throws Exception {


         String query_tr = " SELECT * ";


        query_tr += " FROM Transfers TRANSFERS ";
        query_tr +=" LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY  " ;

        query_tr +=" WHERE TRANSFERS.ORDERNBR in ('" +listOrderNumber + "')";


            SQLQuery sqlQuery = this.getSession().createSQLQuery(query_tr);


            sqlQuery.setResultTransformer(Transformers.aliasToBean(
                    SupEntity.class));

            List list = sqlQuery.list();

            return list;
        } 

我从这段代码中调用了这个方法:

   public SupListEntity getsupList(
        HttpServletRequest request,
        SupListEntity supListEntity)
        throws Exception {
        List<String> list = new ArrayList<String>();
         List<CorrespondenceEntity> sendsupList =new ArrayList<SupEntity>();
        String [] tabOrder=null;

                if(supListEntity.getId()!=null)
                {

                    tabOrder=supListEntity.getId().split(",");
                    if(tabOrder!=null && tabOrder.length>0)
                    {
                        for(int i=0;i<tabOrder.length;i++)
                        {
                            list.add(tabOrder[i]);

                        }
                        sendsupList = supDAO.sendSup(list);
                          supListEntity.setCorrespondenceList(sendsupList); 

                    }



                }

        return supListEntity;
    }

所以我的查询产生的问题有这样的代码:

in('[236359981,236359982,236359983]'),这是假的  它应该是这样的 in('236359981',''236359982','236359983')

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

String query_tr = " SELECT * ";
       query_tr += " FROM Transfers TRANSFERS ";
       query_tr +=" LEFT OUTER JOIN correspondence_copy CORRESPCPY on CORRESPCPY.ID_COPY = TRANSFERS.ID_COPY  " ;
       query_tr +=" WHERE TRANSFERS.ORDERNBR in (:list)";

SQLQuery sqlQuery = this.getSession().createSQLQuery(query_tr);
sqlQuery.setParameterList("list", listOrderNumber)