我知道以下工作(这将是存储过程中代码的一部分):
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
结婚,所以如果有更好的方法,请随时提出建议。