在 Unix Shell 脚本 Solaris 中将 Table 名称作为变量传递给 sql 查询

Pass Table name as Variable in sql query in Unix Shell Script Solaris

我正在 solaris 中创建一个 Unix shell 脚本,我的任务是 运行 sql 查询 35 table 秒并将输出带到一个 csv file.For 我认为我将创建一个数组并通过使用 for 循环我将把 table 名称一个一个地传递给 sql query.So 作为我试图将 table 名称作为 sql 查询中的变量传递的示例。 我正在传递 table name is sql 查询以及我正在创建的 CSV。 但不是working.Please帮助....

table_nm="PRODUCT"

sqlplus -s admin/admin_123@extend12 <<EOF 
SPOOL /data2/interfaces/scripts/`$table_nm`.CSV;
set colsep ,
set feedback off 
set trimspool on
set linesize 5000
set pagesize 1000
set heading on
set term off 
set verify off 
set timing off
set echo off
select * from `$table_nm` where PROD_ID = '1618' AND PROD_SER_NUM = 21 ;
spool off;
EXIT;
EOF
echo "end"

遍历数组。不要使用反引号。

tablearry=(PRODUCT SALES EMPLOYEES)


for i in "${tablearry[@]}"
 do
  table_nm=$i

sqlplus -s admin/admin_123@extend12 <<EOF 
SPOOL /data2/interfaces/scripts/${table_nm}.CSV;
set colsep ,
set feedback off 
set trimspool on
set linesize 5000
set pagesize 1000
set heading on
set term off 
set verify off 
set timing off
set echo off
select * from ${table_nm} where PROD_ID = '1618' AND PROD_SER_NUM = 21 ;
spool off;
EXIT;
EOF
echo "end"


done