在存储过程中使用变量执行IN

时间:2014-06-18 16:43:41

标签: sql oracle

我正在开发一个存储过程,而且我已经陷入困境。 在某些方面我有这个:

stmt := stmt || ' AND Risk.Code IN (:4) ';

如何使risk.code执行以下操作:4是包含值列表的文本变量 " 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20和#34;

2 个答案:

答案 0 :(得分:0)

找到它,

stmt := stmt || ' AND Risk.Code IN ('|| P_RISK ||') ';

答案 1 :(得分:0)

首先,您需要将逗号分隔值转换为varray,然后使用

stmt := stmt || ' AND Risk.Code IN (select column_value from TABLE(v_my_data))';

一种技巧:https://blogs.oracle.com/aramamoo/entry/how_to_split_comma_separated_string_and_pass_to_in_clause_of_select_statement