Как выполнить psql из UNIX с переменной для предикатов? - PullRequest
0 голосов
/ 14 апреля 2019

Я хотел бы знать, как сделать эквивалент кода ниже, который я запускаю в другой СУБД в Postgres.

Сценарий UNIX:

call_rdbms_sql.sh

Содержимое:

CONNDETAILS<<EOF
select col1 from table1 where col1='&ValueofCol1';
EOF

Я выполняю это как:

UNIXPROMPT$> ksh ./call_rdbms_sql.sh col1valuepassed

Это будет передано в сценарий sql в сценарии unix и предоставит результаты.

Я могу настроить сценарий unixэто вызывает postgres sql.Эта часть работает нормально до тех пор, пока у сценария sql нет никаких запросов на поставку.

Однако я хочу передать значения в условие Where.

-gv

1 Ответ

0 голосов
/ 14 апреля 2019

Вы можете передать переменную, используя psql 's -v опция

val=$1   #set the first argument to val
if [ -z $val ]           #check if it is set, exit script if it's not
then
   echo "Invalid input"
exit
fi

psql conndetails  -v ValueofCol1=$val<<EOF
select col1 from table1 where col1=:'ValueofCol1'; --use : before quoting 
                                                   --variable name
EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...