具有可变参数量的动态SQL

时间:2017-03-29 22:23:54

标签: sql oracle dynamic-sql execute-immediate

我知道以下工作(这将是存储过程中代码的一部分):

sql_string := 'INSERT INTO my_table (data_id, data_col) SELECT SYS_GUID(),''{"json_id1":'' || (:value_1 - val_from_view_1 + :i - 1) || ''}'' FROM my_view WHERE col_1 <= :value_2';

FOR i IN 1..N LOOP
    EXECUTE IMMEDIATE sql_string
    USING IN OUT input_value_1, i, input_value_2;
END LOOP;

我的问题是,由于sql_string作为我的存储过程的输入参数,我该如何处理USING子句的可变数量的参数?也就是说,我如何涵盖上述情况,sql_string是这样的情况:

EXECUTE IMMEDIATE sql_string
USING IN OUT input_value_1, i, input_value_2, ..., input_value_N;

以及介于两者之间的一切?

PS:我没有和EXECUTE IMMEDIATE结婚,所以如果有更好的方法,请随时提出建议。

0 个答案:

没有答案