想要将SQL查询的结果转换为变量

时间:2017-01-18 11:06:29

标签: bash unix scripting

在这个脚本中,我试图将SQL查询的结果转换为变量计数,我稍后会比较它以确定是否发送电子邮件。

执行脚本时,出现integer expression expected错误。

这是我的剧本。

LOGFILE=/home/ni916c/${SCRIPT}.$RUN_DATE.log
RPTNAME=/home/ni916c/ASPEN_LOADER_error.xls
#rm $LOGFILE
count=$(sqlplus -S ni916c/rajabeta17 <<-EOF
set heading off
        SET FEEDBACK OFF

  SELECT 'Loader File Failed:: '||to_char(load_id) ||'  '|| to_char(file_id) ||'  '||file_name||'  '||to_char(load_status_id) FROM DL_FILES_RECEIVED
  WHERE
 period_id = to_number(to_char(sysdate,'yyyymm'))
  and load_status_id=300;
-- in (select load_status_id  from DL_LOAD_STATUS where category like '%ERROR%');
  exit;
  EOF
)
echo "$count" >> $LOGFILE
if [ "$count" -ne 0 ]
then
mailx -s "LOADER ERROR" rk862h@att.com < $LOGFILE
fi

1 个答案:

答案 0 :(得分:0)

我认为错误来自两个来源之一:

  1. 您的SQL语句中存在问题(在这种情况下,您应该尝试在脚本之外调试它)
  2. if [ "$count" -ne 0 ]失败,因为您的语句不返回整数。
  3. 如果问题是上面的(2),您可能必须在脚本中添加某种错误处理以检测意外结果。例如:

    if
      [[ "$count" =~ ^[0-9]+$ ]]
    then
      # Ok, we have an integer
    else
      # Oops, something went wrong
    fi
    

    您还应该确保SQL语句没有返回导致count变量不被识别为整数的其他字符,在这种情况下可能需要进行一些修剪。