如何使用isql执行存储在shell脚本变量中的SQL语句

时间:2012-03-07 08:44:17

标签: shell isql isqlquery

所以,我试图使用isql

执行存储在shell脚本变量中的SQL语句

附加通用代码。

SQL="select * from Student"

EMPLOYEES=`isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER<<EOF
$SQL
go

然而,在执行此操作时,我收到一个错误,例如:关键字'Select'附近的语法不正确以及'='附近的错误suntax

任何人都知道如何执行直接存储在isql变量中的SQL查询?

2 个答案:

答案 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.$$

您可能想为临时文件选择更好的名称。