p_ID为无参数的存储过程程的传入参数
还有个思路就是将传进来的p_ID插入到临时表中,然後这样写:where 条件 in (select * from 临时表);
where 条件 in (regexp_substr(p_ID,'[^,]+')) 这样写测过后发现,只取到了p_ID这个字段的第一个字段因为我对正则表达式不是很熟悉,所以换了个解决辦法
有位大佬已经写得很详细了,这里我就直接将他的博客贴出来如有侵权,请联系我我会删掉的~
写無参数的存储过程程时输入的参数个数是固定的,但最近业务需求输入的参数不固定。
思路:oracle无参数的存储过程程的输入参数个数、類型肯定不能改因此输入不定个数参数时必须另想它法。
变通方法:客户端将需要传入的参数先拼接成一个字符串再传给oracle无参数的存儲过程程,无参数的存储过程程收到该字符串后进行解析出所有的需要的参数。
本回答由电脑网络分类达人 赵康勇推荐
你对这个回答的評价是
'不限定输入的参数个数' 是不可能的,不过如果你想实现这样可变入参个数的效果可以变通一下。
仳如:入参inStr varchar2类型(这个字符串是多个入参以固定分割符拼接而成的)传入无参数的存储过程程后,在根据分隔符拆分成多个变量
这样僦可以实现你要的效果了。如果需要可变个数的出参也可以这样做。
这只是个思路如果有需要,还可以定义type等等
本回答被提问者和網友采纳
你对这个回答的评价是?
暂时不能可尽量多的设置参数个数,在无参数的存储过程程里面做判断
你对这个回答的评价是
p_ID为无参数的存储过程程的传入参数
还有个思路就是将传进来的p_ID插入到临时表中,然後这样写:where 条件 in (select * from 临时表);
where 条件 in (regexp_substr(p_ID,'[^,]+')) 这样写测过后发现,只取到了p_ID这个字段的第一个字段因为我对正则表达式不是很熟悉,所以换了个解决辦法
有位大佬已经写得很详细了,这里我就直接将他的博客贴出来如有侵权,请联系我我会删掉的~
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||