unix 希望将SQL查询的结果转换为变量

mzaanser  于 2022-11-04  发布在  Unix
关注(0)|答案(2)|浏览(129)

在这个脚本中,我尝试将SQL查询的结果放入变量count中,稍后比较该变量count以确定是否发送电子邮件。
当我执行脚本时,我得到一个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
fwzugrvs

fwzugrvs1#

我假设错误来自以下两个来源之一:

  1. SQL语句中存在问题(在这种情况下,应尝试在脚本外调试它)
    1.失败的是if [ "$count" -ne 0 ],因为您的语句没有返回整数。
    如果问题出现在上面的(2)中,您可能需要在脚本中添加某种错误处理,以检测意外的结果。例如:
if
  [[ "$count" =~ ^[0-9]+$ ]]
then
  # Ok, we have an integer
else
  # Oops, something went wrong
fi

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

mepcadol

mepcadol2#

result=$(psql -U "$user" -h "$host" -p "$port" -d "$main_schema" -c "select object_version from db_utility.versions" 2>&1)

这是在bash变量中获取postgresql查询结果的方法

相关问题