0

所以,我正在尝试使用 isql 执行存储在 shell 脚本变量中的 SQL 语句

附上通用代码。

SQL="select * from Student"

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

但是在执行此操作时,我收到一个错误,例如:关键字“Select”附近的语法不正确和“=”附近的 Suntax 不正确

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

4

2 回答 2

5

以这种方式尝试:

EMPLOYEES=`echo "$SQL" | isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER`
于 2012-03-07T08:53:18.093 回答
4

根据此页面,以下应该有效:

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

您可能希望为临时文件选择一个更好的名称。

于 2012-03-07T09:04:44.993 回答