SQL 查询在 unix shell 脚本中不起作用

SQL 查询在 unix shell 脚本中不起作用

我在 sql 语句中使用 shell 变量,并且该变量是字符串类型。如果我执行下面的脚本,我得到的输出是“未选择行”,但是当我在 sql 提示符中执行相同的选择查询时,我得到了正确的输出。即使我尝试在脚本中用“os”替换 $var,但仍然没有得到所需的输出

var="os"
user="system"
pass="2451"
ou=$(sqlplus -s $user/$pass <<EOF
select login,subject from timetable where subject=$var;
exit;
EOF
)
echo $ou

答案1

在这种情况下执行的语句将是:

select login,subject from timetable where subject=os;

它将行主题与不存在的(不存在/系统)变量“os”进行比较。

您必须根据所使用的 dbms 添加括号,如下所示:

select login,subject from timetable where subject=\'$var\';

相关内容