Как передать переменные в sqlplus в команду bash

Вот может проблема: у меня есть встроенный вызов sqlplus в моем файле bash, и я хотел бы передать ему параметр

этот код - это то, что я пытаюсь

c_id=`sqlplus -S $login/$password  $id << EOF
    set pagesize 0
    set verify off
    set head off
    set feedback off
    SELECT id from bdd.table where ID not in (select id from bdd.TMP_table) and id > &1 and ROWNUM <= 1000 order by id;
    exit;
    EOF`

как я могу использовать свой параметр $id в своем выражении where (& 1)?


person Baltius    schedule 15.09.2011    source источник


Ответы (1)


Просто измените &1 на $id. Например:

id=101
c_id=`sqlplus -S $login/$password  << EOF
    set pagesize 0
    set verify off
    set head off
    set feedback off
    SELECT id from bdd.table where ID not in (select id from bdd.TMP_table) and id > $id and ROWNUM <= 1000 order by id;
    exit;
    EOF`

Bash выполнит подстановку параметров. $id будет заменено фактическим значением параметра, т. е. 101 в данном случае, до запуска sqlplus.

person dogbane    schedule 15.09.2011
comment
Спасибо, это было! Я понял, что это то, что я сделал в начале, но у меня были ошибки в моем цикле... - person Baltius; 15.09.2011
comment
@Baltius: Лучший способ отблагодарить кого-то — увеличить его очки репутации. Когда вы видите хорошие вопросы и ответы, проголосуйте за них, используя серые треугольники, i.imgur.com/kygEP.png . Также не забудьте принять ответ, который лучше всего решает вашу проблему, если таковой имеется, нажав знак галочки , i.imgur .com/uqJeW.png. Удачи! - person shellter; 15.09.2011
comment
@Shellter: я бы сделал это, но для включения этого действия мне требуется 15 очков репутации: я сделаю это позже, так что ... - person Baltius; 20.09.2011
comment
вы можете принять ответ только с 1 баллом (2-я ссылка выше). Удачи. - person shellter; 24.09.2011