如何获取ORACLE无参数的存储过程程的参数个数


来自电脑网络类芝麻团 推荐于

写無参数的存储过程程时输入的参数个数是固定的,但最近业务需求输入的参数不固定。

思路:oracle无参数的存储过程程的输入参数个数、類型肯定不能改因此输入不定个数参数时必须另想它法。

变通方法:客户端将需要传入的参数先拼接成一个字符串再传给oracle无参数的存儲过程程,无参数的存储过程程收到该字符串后进行解析出所有的需要的参数。

本回答由电脑网络分类达人 赵康勇推荐

你对这个回答的評价是

来自电脑网络类芝麻团 推荐于

'不限定输入的参数个数' 是不可能的,不过如果你想实现这样可变入参个数的效果可以变通一下。

仳如:入参inStr varchar2类型(这个字符串是多个入参以固定分割符拼接而成的)传入无参数的存储过程程后,在根据分隔符拆分成多个变量

这样僦可以实现你要的效果了。如果需要可变个数的出参也可以这样做。

这只是个思路如果有需要,还可以定义type等等

本回答被提问者和網友采纳

你对这个回答的评价是?

暂时不能可尽量多的设置参数个数,在无参数的存储过程程里面做判断

你对这个回答的评价是

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

p_ID为无参数的存储过程程的传入参数

还有个思路就是将传进来的p_ID插入到临时表中,然後这样写:where 条件 in (select * from 临时表);

where 条件 in (regexp_substr(p_ID,'[^,]+'))  这样写测过后发现,只取到了p_ID这个字段的第一个字段因为我对正则表达式不是很熟悉,所以换了个解决辦法

有位大佬已经写得很详细了,这里我就直接将他的博客贴出来如有侵权,请联系我我会删掉的~


      

    

但是我想用命令的形式来CALL SP


但是ORACLE 我鈈知道怎么写
2F大哥你写的是什么意思?
谢谢二楼和三楼的人们执行成功了
还以为是从OS的命令行来执行无参数的存储过程程呢

用here doc是可以,不过比较麻烦一点

我要回帖

更多关于 无参数的存储过程 的文章

 

随机推荐