Как выполнить инструкцию SQL, хранящуюся в переменной сценария оболочки, используя isql - PullRequest
0 голосов
/ 07 марта 2012

Итак, я пытаюсь выполнить инструкцию SQL, хранящуюся в переменной сценария оболочки, используя isql

Общий код присоединен.

SQL="select * from Student"

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

Однако при выполнении этого я получаю такую ​​ошибкуas: Неверный синтаксис рядом с ключевым словом «Выбрать» и Неверный солнечный налог рядом с «=»

Кто-нибудь знает, как выполнить SQL-запрос, непосредственно сохраненный в переменной из isql?

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

Попробуйте следующим образом:

EMPLOYEES=`echo "$SQL" | isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER`
3 голосов
/ 07 марта 2012

Согласно этой странице , должно работать следующее:

   SQL="select * from Student"

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

Также смотрите мой комментарий к вашему вопросу, потому что в коде, который вы разместили, вам не хватало закрывающей EOFи backtick (каждый в отдельной строке).

Вы также можете попытаться сделать это, как @ 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.$$

Вы можете выбрать более подходящее имя для временного файла.

...