所以,我试图使用isql
执行存储在shell脚本变量中的SQL语句附加通用代码。
SQL="select * from Student"
EMPLOYEES=`isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER<<EOF
$SQL
go
然而,在执行此操作时,我收到一个错误,例如:关键字'Select'附近的语法不正确以及'='附近的错误suntax
任何人都知道如何执行直接存储在isql变量中的SQL查询?
答案 0 :(得分:4)
尝试这种方式:
EMPLOYEES=`echo "$SQL" | isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER`
答案 1 :(得分:3)
根据this page,以下内容应该有效:
SQL="select * from Student"
EMPLOYEES=`isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER<<EOF
$SQL
go
EOF
`
另请参阅我对您的问题的评论,因为在您发布的代码中,您缺少关闭“EOF”和反引号(每个都在单独的行上)。
您也可以尝试按照@ user1254184在他的回答中建议的那样:
EMPLOYEES=`echo "$SQL" | isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER`
最后,要解决引号等潜在问题,您可以使用临时文件:
echo "$SQL" > $TMP/sql.$$
EMPLOYEES=`isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER -i $TMP/sql.$$`
rm $TMP/sql.$$
您可能想为临时文件选择更好的名称。