一个简单的shell+sqlplus的问题

hanzs 2011-12-13 03:05:31
我想实现shell脚本功能如下:并发开50个进程,每个进程都调用存储过程 p_multi_process(o_is_finish in out int),过程调用输入“0”,结束会返回“1”,不管过程是否有异常都会返回1,判断返回值是“1” 时继续调用

我试着写了,但是不行
#!/bin/sh

sqlplus test/test@orcl <<!

for ((i=0;i<50;i++));
do
{
is_finish=1;
while [["$is_finish" -eq "1" ]];
do
{
is_finish = 0;
exec p_multi_process($is_finish);
}
done;
}&
done
wait

exit


会shell的兄弟看看怎么写啊,提示下也行
...全文
287 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanzs 2011-12-13
  • 打赏
  • 举报
回复
果然 存储过程加个死循环,shell起多个进程来调用 搞定 呵呵
yixilan 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yixilan 的回复:]
引用 5 楼 hanzs 的回复:
那有没有其它的方法实现我想要的并发循环执行同一个过程?

写一个Main过程,在这个MAIN过程里,并发循环执行你的SUB过程。
[/Quote]
然后再在Shell里调用你的MAIN过程^_^
我们项目里是这样做的
yixilan 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hanzs 的回复:]
那有没有其它的方法实现我想要的并发循环执行同一个过程?
[/Quote]
写一个Main过程,在这个MAIN过程里,并发循环执行你的SUB过程。
hanzs 2011-12-13
  • 打赏
  • 举报
回复
那有没有其它的方法实现我想要的并发循环执行同一个过程?
yixilan 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hanzs 的回复:]
还有就是如果这样可以的话,那不就是等于没执行一次就要重新连接一次数据库,这样连接断开太频繁了[/Quote]
是的。这样也不太好。唉。。
yixilan 2011-12-13
  • 打赏
  • 举报
回复
你在sqlplus里不能这样使用For循环处理的。。
hanzs 2011-12-13
  • 打赏
  • 举报
回复
现在知道了sqlplus后<<!这个说明下面都是在sqlplus环境下运行的,所以for循环肯定有问题了

但是我把sqlplus拿到里面执行,还是不行
#!/bin/sh

for ((i=0;i<50;i++));
do
{
is_finish=1;
while [["$is_finish" -eq "1" ]];
do
{
is_finish = 0;
sqlplus test/test@orcl <<!
exec p_multi_process($is_finish);
exit

}
done;
}&
done
wait

还有就是如果这样可以的话,那不就是等于没执行一次就要重新连接一次数据库,这样连接断开太频繁了
yixilan 2011-12-13
  • 打赏
  • 举报
回复
现在你的Shell运行效果是怎样的?

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧