如何给DB2数据库的存储过程中 where 的in 条件传参数?

存储过程中有一条select语句,where field1 in ('001','002')。in后面括号里面是由参数传入的,且个数是不确定的。现在遇到一个问题,假如我的参数值等于“'001','002'”,简单的用逗号隔开传递到数据库数据库会认为是一个值而查询不到无法完成功能,请问有什么办法可以解决?

WITH RETURN TO CALLER DECLARE CHOICE2光标 - 声明游标Choice2
SELECT CompanyID,DEPTID,SEQ ID SUBMITTIME,
B.GRADEDESC HYEAR,产品编号,产品代码PRODUCTDESC

A.GRADEID,价格,SFZDPY,的LQUANT,MQUANT,MCQUANT,LCQUANT,

UQUANT OTHQUANT1 OTHQUANT2 OTHQUANT3 OTHQUANT4,EMP1 EMP2状态,A.REMARK:

十进制(ABS(MCQUANT,
NULLIF(MQUANT,0)* 100,10,2)标签/>从T_SUPPLY_PPB_HYà

LEFT JOIN B开A.GRADEID的T_SUPPLY_GRADATION的B.GRADEID

,WHERE HYEAR = TO_CHAR(P_NF )| | P_BN

订单由B.GRADEID PRODUCTCODE,A.PRICE;

- 1.DECIMAL(P,S)十进制数,小数点位置精度(P)和确定的小数位数(S)。 /> - 精度的号码的数字之和的总数必须小于32。小数位的数字位数的小数部分总是小于或等于精度。

- 如果你不指定精度和小数位数,默认精度的十进制值是5,和默认的小数位数为0。

- 2语法:NULLIF(表达式,表达式)

- 表达式:(常量,列名,函数,子查询或算术运算符,任何按位运算符和字符串运算组)
- 如果两个表达式不相等,NULLIF返回第一个表达式的值。如果他们是平等的,NULLIF返回第一个表达式类型的空值。如果两个表达式都是平等的,表达式的结果是NULL,NULLIF相当于CASE的搜索功能。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-10
需要用到如下方法:
<selectid="selectProductList"parameterClass="list"resultClass="ProductBean">
SELECT * FROM product WHERE pname in <iterateopen="("close=")"conjunction=",">#[]#</iterate> </select>
第2个回答  2013-05-02
这种情况只能在过程中使用动态SQL来实现。本回答被提问者采纳