Linux SQLPLUS声明块中出错

Linux SQLPLUS声明块中出错,linux,oracle,bash,sqlplus,Linux,Oracle,Bash,Sqlplus,我在declare块中得到一个错误。我已经把它贴在代码下面了 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

我在declare块中得到一个错误。我已经把它贴在代码下面了

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美元


有人能告诉我是什么导致了这个问题吗?

我想您需要一个here文档,假设
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
}
函数XYZ
{

sqlplus-s$DB_USR/$DB_USR$pwd_suffix@$SID这段代码到底是什么?PL/SQL还是bash?