使用shell脚本从数据库中删除行

时间:2015-02-17 11:27:33

标签: oracle scripting sqlplus

以下脚本给我一个错误。基本上我试图删除我从第一个查询中获得的记录。我把它们放在一个文本文件中,格式化它们并在删除操作中使用它们。

执行脚本后,我收到以下错误: - :第5行:第27行的语法错误:`<<'不匹配的

1 个答案:

答案 0 :(得分:0)

无法分辨,因为您转储的代码未格式化,但我的第一个猜测是您在here document中的EOF前面有前导空格。

这应该有用(注意EOF前面没有前导空格。:

sqlplus -s $dbcreds << EOF > output.txt
  SET SERVEROUTPUT OFF
    select empname from emp where dept_no=123;
EOF


if [ -s "output.txt" ]
then
  echo " Found the below employees....Deleting them from Database ..............!!!! \n"
  cat output.txt
  sed "s/(.*)/'\1'/" output.txt| tr '\n' ','|sed 's/.$//' >final_employees.txt

  while read line
  do
     sqlplus -s $dbcreds <<EOF
       SET SERVEROUTPUT OFF
       Delete from emp where empname in ($line);
EOF
  done  < final_employees.txt

else

  echo " No employees found....!!!"
fi