Jon*_*Jon 0 oracle plsql oracle11g
我有一个如下所示的声明,但它一次填写1000个电话.任何结果都会引发PLS-123错误程序太大戴安娜节点
begin
sp_myprocedure(....)
sp_myprocedure(....)
sp_myprocedure(....)
sp_myprocedure(....)
end
Run Code Online (Sandbox Code Playgroud)
我们正在转向11g,我想知道这种限制是否可以增加到2000例如.
谢谢
"我有一个如下所示的声明,但它一次只能拨打1000个电话"
这是一个非常糟糕的编程策略.多次写同样的东西是代码气味.任何时候我们发现自己用cut'n'paste进行编程然后进行一些编辑就是我们应该停下来问自己的时候,"嗯,还有更好的方法吗?"
"每个存储过程调用的参数都不同"
是的,但参数必须来自某个地方.据推测,此刻你正在对它们进行一千次硬编码.呸.
更好的解决方案是将它们存储在表格中.然后你可以写一个简单的循环.像这样:
for prec in ( select p1, p2 from my_parameters
order by id -- if ordering is important
)
loop
sp_myprocedure(prec.p1, prec.p2);
end loop;
Run Code Online (Sandbox Code Playgroud)
因为您将参数存储在表中,所以您可以根据需要调用该proc,并且不受Diana节点限制的约束.
确实,您必须将参数值移动到表中,但维护表中的数据并不比维护源代码中的硬编码值更难.
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |