0

そこで、isql を使用してシェルスクリプト変数に格納された SQL ステートメントを実行しようとしています。

ジェネリックコード付属。

SQL="select * from Student"

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

ただし、これを実行すると、次のようなエラーが表示されます: キーワード 'Select' 付近の構文が間違っています。

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 に答える