Wenn ich mich per SSH mit meinem IBMi verbinde und qsh starte, kann ich es ausführen db2 -S "SELECT * FROM LIB.SOMEPF"
und die Ergebnisse erhalten. Ich kann es nicht über den Standard-PASE-Bildschirm tun. Ich bekomme
$ /usr/bin/db2
/usr/bin/db2: cannot execute
Ist es möglich, SQL-Abfragen von PASE auszuführen, anstatt QSH zu starten?
Antwort1
Ich habe ein db2-Shell-Skript in meinem Home-Verzeichnis. Es ist schon so lange dort, dass ich nicht weiß, wann oder wie es dorthin gekommen ist. Es könnte Teil von 5799-PTL sein. Ich weiß, es ist nicht hilfreich, aber hier ist der Inhalt:
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)"
Wenn ich CALL QP2TERM
dann db2-Befehle ausgebe, db2 -S 'select * from datesample'
läuft es wie mit diesem Skript.