下面shell报如此error:HAIJIAN_TEST是个procedure,用pl/sql可以执行#!/bin/ksh. ~/.eda.env
#######################################################
##########           Loaddatatooff              #######
#######################################################
function Loaddatatooff
{
echo "      ... Start Loaddatatooff function......"
sqlplus -s<<EOF
echo "...........line 1..........................." 
$USERNAME/$UEDAPWD
echo "............line 2............................"
set head off
set feedback off
echo "..............line 4.........................."
declare 
       ins_ret integer;
begin 
echo "              ... Start Begin......      "
       ins_ret := HAIJIAN_TEST;
echo "              ... Procedure had done...   "
       if ins_ret=0 then
  commit:
       else 
  rollback;
       end if;
end;
/
exit:
EOFecho "      ... End   Loaddatatooff function...... "
}#########################################################
###########            MAIN                     #########
#########################################################echo "...Start Offeda Loader......"
 
     Loaddatatooff
     
echo "...End   Offeda Loader......"

解决方案 »

  1.   

    没人,自己顶;error就是标题的描述;估计是unix shell调用procedure的时候出的问题
      

  2.   

    确实是调用procedure的时候出的问题,但是不知道如何修正?
      

  3.   

    我用另外的方式,调用pkg,pkg本身没有问题,但是shell调用的过程不行
      

  4.   

    我改成下面这样,还是不行!报同样的错误 有没有高手阿 #!/bin/ksh. ~/.eda.env
    #######################################################
    ##########           Loaddatatooff              #######
    #######################################################
    function Loaddatatooff
    {
    echo "      ... Start Loaddatatooff function......"
    sqlplus -s<<EOF
    $USERNAME/$UEDAPWD
    set head off
    set feedback off
    declare
           w_ueda_sysdate  date;
           ins_ret         integer;
    begin 
           select sysdate 
     into w_ueda_sysdate
     from dual;      ins_ret:= HAIJIAN_TEST_PKG.HAIJIAN_TEST(w_ueda_sysdate);
          
          if ins_ret=1  then
             commit;
           else 
     rollback;
          end if;  
    end;
    /
    exit:
    EOFecho "      ... End   Loaddatatooff function...... "
    }#########################################################
    ###########            MAIN                     #########
    #########################################################echo "...Start Offeda Loader......"
     
         Loaddatatooff
         
    echo "...End   Offeda Loader......"