我想实现shell脚本功能如下:并发开50个进程,每个进程都调用存储过程 p_multi_process(o_is_finish in out int),过程调用输入“0”,结束会返回“1”,不管过程是否有异常都会返回1,判断返回值是“1” 时继续调用我试着写了,但是不行
#!/bin/shsqlplus 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
waitexit
!会shell的兄弟看看怎么写啊,提示下也行

解决方案 »

  1.   

    现在你的Shell运行效果是怎样的?
      

  2.   

    现在知道了sqlplus后<<!这个说明下面都是在sqlplus环境下运行的,所以for循环肯定有问题了但是我把sqlplus拿到里面执行,还是不行
    #!/bin/shfor ((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还有就是如果这样可以的话,那不就是等于没执行一次就要重新连接一次数据库,这样连接断开太频繁了
      

  3.   

    你在sqlplus里不能这样使用For循环处理的。。
      

  4.   

    写一个Main过程,在这个MAIN过程里,并发循环执行你的SUB过程。
      

  5.   

    然后再在Shell里调用你的MAIN过程^_^
    我们项目里是这样做的
      

  6.   

    果然 存储过程加个死循环,shell起多个进程来调用 搞定 呵呵