当尝试编译时,我的包会出错。
PLS-00306:调用“分部”中错误的参数数或参数类型
v_sql := 'select count(*) from table ('|| p_month_ids ||') where column_value = ' || p_month_id;
Execute Immediate v_sql into v_count;发布于 2022-10-03 12:54:10
您正在尝试将值连接到字符串中,但只有当每个单独的值都是字符串或可以隐式转换为字符串时才能工作。如果p_month_ids是一个集合--从您使用它的方式来看--那么您必须单独添加每个元素--因为您不能隐式地将p_month_ids集合转换成一个字符串。
但是不要这样做;使用绑定变量:
v_sql := 'select count(*) from table (:p_month_ids) where column_value = :p_month_id';
execute immediate v_sql into v_count using p_month_ids, p_month_id;或者根本不使用动态SQL:
select count(*) into v_count
from table (p_month_ids) where column_value = p_month_id;或者直接循环集合和计数匹配,而不是使用查询(和上下文切换)。
https://stackoverflow.com/questions/73935687
复制相似问题