Oracle IN 传递字符串参数查询失效

在写存储过程中有如下代码:
 FOR a IN (
         SELECT a.svo_no,a.AUDIT_NO,a.order_id  FROM TT_PI_MODEL_REL a
    ) LOOP

SELECT COUNT(1) INTO V_FLAG  FROM TT_PI_ORDER WHERE pi_id IN (a.order_id)  AND REGULARIZA_DATE IS NOT NULL ;

//执行若干操作

END LOOP;
  其中 
SELECT a.svo_no,a.AUDIT_NO,a.order_id  FROM TT_PI_MODEL_REL a    查出来的order_id 有多个值  1000007845,1000007669

讲order_id放入 pi_id IN (a.order_id)中执行 查询出错

因为 in 中的参数问题,此时不能简单的理解为  pi_id in (1000007845,1000007669)  而是一个 pi_id in(一个变量)  从而导致查询出错

解决办法 : 事先将
SELECT COUNT(1) INTO V_FLAG  FROM TT_PI_ORDER WHERE pi_id IN (a.order_id)  AND REGULARIZA_DATE IS NOT NULL ;拼接成sql语句的形式,而不要用传递a.order_id的形式,

操作如下:
  execute IMMEDIATE
                 ‘ SELECT COUNT(1)  FROM TT_PI_ORDER WHERE pi_id IN (‘||a.order_id||‘)  AND REGULARIZA_DATE IS NOT NULL  ‘
                 INTO c_flag ;

使用

 execute IMMEDIATE 解决问题

其用法 可参考网络 :http://kevinlee0755.iteye.com/blog/1381617 


 
时间: 2024-11-10 16:19:18

Oracle IN 传递字符串参数查询失效的相关文章

jQuery 之 setTimeout 传递字符串参数报错

当你打算调用一些jQuery代码显示隐藏的一个元素,并调用setTimeout()在一段延时之后设置其HTML的内容: 整个页面的代码是这样的. <span style="font-size:18px;"><html> <head> <title></title> </head> <body> <a href="#" id='heihei' onclick="show

JS函数传递字符串参数(符号转义)

原文链接:https://blog.csdn.net/Myname_China/article/details/82907965 JS函数传递字符串参数,如果没有转义处理,在接收的时候无法正确的接收字符串. 在双引号内 <a href="javascript:orderDetails(\''+orderId+'\')">查看详情</a> <a href="javascript:void(0)" onclick="orderDe

Oracle存储过程根据传入参数查询

Oracle存储过程中根据传入参数查询时无效 环境:Oracle11g 需求:根据传入的参数作为条件,查询相关数据 问题:条件无效 代码: create or replace procedure XXX(associatedId in varchar,typeinfoid in varchar) as sheetcontent clob; begin select wm_concat(t.datasource) into sheetcontent from xly_associatedorder

存储过程传递字符串参数不全、截断

1.问题描述 存储过程GetTableCompare,三个参数输入参数 1.1 .传入条件参数: and myclassdate between '2014-12-01' and '2014-12-31'  and classname like '%夜班%'  and deptid in (1,2,3,4,5,8,9,11,13,14,18,19,20,21,23,25,26,27,28,29,30,31,32,33,34) 通过代码调用时,总是报语法错误(少)) GetTableCompare

解决mybatis3.2+mysql5.6中文参数查询失效

框架:Spring4.1+mybatis3.2+mysql5.6 问题:当查询带有中文时,返回空值. 解决:是mysql字符集设置引起的,如下图: 修改: (1) character_set_server = utf8; character_set_database = utf8; 重启mysql服务(可选) (2)数据库连接URL带useUnicode=true&characterEncoding=utf-8

mybatis参数查询

单个参数查询 在mapper.xml配置文件中配置 <select id= "selectByNu" parameterType ="java.lang.String" resultMap="BaseResultMap" > select <include refid= "Base_Column_List" /> from consume_number where consume = #{consume

js获取url查询字符串参数

最近看js高级程序设计 对其中查询字符串参数的获得重新写了,当传递一个完整的URL的时候对查询字符串的提取 function getQueryArgs(){ var qs = (location.search.length > 0 ? location.search.substr(1) : ''), //保存每一项 args = {}, //得到每一项 items = qs.length ? qs.split('&') : [], item = null, name = null, valu

c#获取url中的查询字符串参数

/// <summary> /// 获取url中的查询字符串参数 /// </summary> public static NameValueCollection ExtractQueryParams(string url) { int startIndex = url.IndexOf("?"); NameValueCollection values = new NameValueCollection(); if (startIndex <= 0) ret

location对象查询字符串参数

虽然location.search可以返回从问号到URL末尾的所有内容,但却没有办法逐个访问其中的每个查询字符串参数.为此,可以创建下面这样一个函数,用以解析查询字符串,然后返回包含所有参数的一个对象: 1 function getQueryStringArgs(){ 2 //取得查询字符串并去掉开头的问号 3 var qs = (location.search.length > 0 ? location.search.substring(1) : ""); 4 //保存数据的对