SQLPLUS声明块中的错误

时间:2013-02-22 19:31:32

标签: linux oracle bash sqlplus

我在声明块中收到错误。我把它粘贴在代码下面。

function XYZ
{
        sqlplus -s $DB_USR/$DB_USR$pwd_suffix@$SID
        set timing off
        set serveroutput on size 10000
        set feedback off
        spool logname_$sid.out

        variable ex_code number
        whenever sqlerror exit 1
        begin
                :ex_code :=0;
        end;
        /


        declare

         l_cnt number := 0;
         l_sql varchar2(4000) := '';
         l_tmp_name varchar2(100) := '';
    some more code...

}
  

./ XYZ.sh:第26行:意外令牌附近的语法错误`('      ./XYZ.sh:第26行:`l_sql varchar2(4000):='';'
     -bash-3.2 $

有人能告诉我导致问题的原因是什么吗?

1 个答案:

答案 0 :(得分:0)

我认为你想要一个here-document,假设sqlplus正在读取标准输入:

function XYZ
{
        sqlplus -s $DB_USR/$DB_USR$pwd_suffix@$SID <<-EOF
        set timing off
        set serveroutput on size 10000
        set feedback off
        spool logname_$sid.out

        variable ex_code number
        whenever sqlerror exit 1
        begin
                :ex_code :=0;
        end;
        /


        declare

         l_cnt number := 0;
         l_sql varchar2(4000) := '';
         l_tmp_name varchar2(100) := '';
        some more code...
        EOF
}