Добавление вывода текста в Informix - PullRequest
1 голос
/ 31 марта 2020

У меня есть сервер под управлением Informix и у меня есть 2 вопроса о выводе текста во время выполнения кода.

У меня есть файл, содержащий код

sperform rtl_est_dte
isql <g_rtl_mrg1.sql> test
isql <fm_prft.sql> test
isql <whs_prft.sql> test
isql <upgfp_frgt.sql> test
isql <upd_plants.sql> test

Есть ли способ добавить текстовый вывод между каждым sql на экране вывода, чтобы я мог сказать, на каком этапе он включен?

ИЛИ

Можно ли добавить текст в фактическую кодировку SQL для каждого этапа, который будет отображаться в выводе при запуске? Прямо сейчас все, что я вижу, это "Выбранная база данных", "Удалено 424 строки" и т. Д. c. Я знаю, как добавить скрытый текст с помощью { … }, но не умею отображать текст.

1 Ответ

1 голос
/ 31 марта 2020

Это похоже на скрипт оболочки. Было бы яснее, если бы он начинался с шебанга и некоторых комментариев:

#!/bin/sh
#
# Run rtl_est_dte form to get new data,
# then run 5 scripts to process the data, saving the results in file test

В любом случае, учитывая, что это, вероятно, сценарий оболочки, вы должны иметь возможность добавить echo строк, чтобы комментировать то, что вы хотите:

sperform rtl_est_dte
echo "Running g_rtl_mrg1"
isql <g_rtl_mrg1.sql> test
echo "Running fm_prft"
isql <fm_prft.sql> test
echo "Running whs_prft"
isql <whs_prft.sql> test
echo "Running upgfp_frgt"
isql <upgfp_frgt.sql> test
echo "Running upd_plants"
isql <upd_plants.sql> test
echo "Finished"

Я надеюсь, что вы сможете дать более значимые имена выполняемым шагам, но это иллюстрирует, что вы могли бы сделать.

Я также заметил, что он продолжает убирать Файл test, поэтому информация, сохраненная при запуске g_rtl_mrg1.sql, теряется при запуске fm_prft.sql, и теряется при запуске whs_prft.sql и так далее. Используйте >> для добавления к файлу test. Было бы более обычным отделить перенаправление вывода от перенаправления ввода:

isql <upd_plants.sql >>test

, а не текущее:

isql <upd_plants.sql> test

Это не является чем-то отдаленно подобным XML. Тем не менее, по крайней мере, оригинальный автор не использовал:

<upd_plant.sql> test isql

Это работает так же - это сбивает с толку всех, кто его читает.

Вы также можете вставлять экранирование оболочки в .sql файлы:

SELECT * FROM SomeWhere;

!echo "Hello world!"

SELECT * FROM ElseWhere;

IIR C, экранирование оболочки не работает, если вы попытаетесь прочитать файл .sql в редакторе isql SQL и затем запустить его. Он работает только из командной строки, как в коде в вопросе.

Вывод прогресса (Database selected et c) записывается со стандартной ошибкой, к лучшему или к худшему (хуже IMO, но я написал свой собственный SQLCMD за годы до того, как Microsoft выпустил их, именно потому, что мне не нравилось то, что делал isql, и то, что делал dbaccess после его выпуска).

...