![Выполнение SQL-запросов из PASE вместо QSH](https://rvso.com/image/658355/%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2%20%D0%B8%D0%B7%20PASE%20%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE%20QSH.png)
Если я подключаюсь по ssh к своему IBMi и запускаю qsh, я могу запустить db2 -S "SELECT * FROM LIB.SOMEPF"
и получить результаты. Я не могу сделать это из экрана PASE по умолчанию. Я получаю
$ /usr/bin/db2
/usr/bin/db2: cannot execute
Можно ли запускать SQL-запросы из PASE вместо запуска QSH?
решение1
У меня в домашнем каталоге есть скрипт оболочки db2. Он там так давно, что я не знаю, когда и как он там оказался. Возможно, он часть 5799-PTL. Не поможет, я знаю, но вот его содержимое:
ls -al db2
-rwxr-xr-x 1 buck 0 646 Jul 02 2013 db2
$
cat db2
#!/QOpenSys/usr/bin/ksh
# map base name "qsh_inout" to "qsh" (just run the interpreter)
basename=${0##*/}
if [[ "$basename" = qsh_inout ]] ; then
basename=qsh
fi
args=''
for temp ; do
args="$args'"
# double embedded quotes halved by CL CALL
while [[ "$temp" = *\'* ]] ; do
args="$args${temp%%\'*}''"
temp="${temp#*\'}"
done
args="$args$temp' "
shift
done
# Copy environment variables, call utility in this process,
# do not process OS/400 messages or spooled output files
exec /QOpenSys/usr/bin/system -eiqs "CALL QSYS/QP0ZCALL ('/usr/bin/$basename' $args)"
Когда я CALL QP2TERM
затем даю команды db2, как будто db2 -S 'select * from datesample'
он работает с этим скриптом.