【问题标题】:Do a IN in stored procedure with variable在带有变量的存储过程中执行 IN
【发布时间】:2014-06-19 23:38:45
【问题描述】:

我正在开发一个存储过程,但我被困在一个步骤中。 在某些时候我有这个:

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

当 :4 是包含值列表的文本变量时,我如何让 risk.code 执行 "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20"

【问题讨论】:

标签: sql oracle


【解决方案1】:

找到了,

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

【讨论】:

  • 由于 SQL 注入,这是有风险的。
【解决方案2】:

首先您需要将逗号分隔的值转换为可变数组,然后使用

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

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2014-03-03
    • 2019-09-27
    相关资源
    最近更新 更多