首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态sql查询

动态sql查询
EN

Stack Overflow用户
提问于 2022-10-03 12:46:01
回答 1查看 50关注 0票数 0

当尝试编译时,我的包会出错。

PLS-00306:调用“分部”中错误的参数数或参数类型

代码语言:javascript
复制
v_sql := 'select count(*) from table ('|| p_month_ids ||') where column_value = ' || p_month_id;
Execute Immediate v_sql into v_count;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-03 12:54:10

您正在尝试将值连接到字符串中,但只有当每个单独的值都是字符串或可以隐式转换为字符串时才能工作。如果p_month_ids是一个集合--从您使用它的方式来看--那么您必须单独添加每个元素--因为您不能隐式地将p_month_ids集合转换成一个字符串。

但是不要这样做;使用绑定变量:

代码语言:javascript
复制
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:

代码语言:javascript
复制
select count(*) into v_count
from table (p_month_ids) where column_value = p_month_id;

或者直接循环集合和计数匹配,而不是使用查询(和上下文切换)。

db<>fiddle

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73935687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档