2014-10-29 4 views
3

Я работаю над базой данных AS400, и мне нужно манипулировать библиотекой/коллекцией с помощью sql.AS400 SQL-запрос, аналогичный CLRLIB (очистить библиотеку) в родном AS400

Мне нужно воссоздать что-то похожее на команду CLRLIB, но я не нахожу хороший способ сделать это.

Есть ли способ удалить всю таблицу из библиотеки с помощью SQL-запроса?

Возможно, я смогу удалить коллекцию и создать новую с тем же именем. Но я не знаю, хороший ли это способ очистки библиотеки.

RESOLVE: Спасибо Buck Calabro за его решение.

Я использую следующий запрос для вызова CLRLIB в SQL:

CALL QSYS.QCMDEXC('CLRLIB LIB_NAME ASPDEV(ASP_NAME)', 0000000032.00000) 

Где LIB_NAME это имя библиотеки, я хочу, чтобы очистить, ASP_NAME это имя ASP, где находится библиотека и 0000000032,00000 является командная длина.

+0

Зачем вам нужно заниматься этим «способом SQL»? Почему недостаточно CLRLIB? –

+0

Я работаю с программным обеспечением BPM (Bonita BPM) и взаимодействую с базой данных, используя AS400-коннектор с sql-запросами. Я не могу использовать команду CLRLIB в SQL-запросе. – YLombardi

+0

Вы можете вызвать QCMDEXC в качестве хранимой процедуры и выполнить команду CL таким образом. –

ответ

2

(обратите внимание, что термин СБОР устарел, SCHEMA является нынешним сроком)

Поскольку библиотека может содержать как SQL и не-SQL объекты, нет SQL способа удаления всех возможных типов объектов.

Удаление схемы и ее повторное создание могут сработать. Но учтите, что если библиотека находится в списке библиотеки заданий, она будет иметь блокировку, и вы не сможете ее удалить. Кроме того, если библиотека изначально не была создана через CREATE SCHEMA (или CREATE COLLECTION), вы столкнетесь с различиями.

CRTLIB создает пустую библиотеку, CREATE SCHEMA создает библиотеку плюс объекты, необходимые для автоматического ведения журнала, и около дюжины представлений системы SQL.

+0

Спасибо за информацию. – YLombardi

1

Прочитайте ответ Чарльза - в вашей схеме могут быть объекты, которые вы хотите сохранить (области данных, программы, файлы отображения и принтера и т. Д.). Если проблема заключается в удалении всех таблиц, построить все таблицы, а затем посмотреть на различные таблицы системного каталога: SYSTABLES, SYSVIEWS, SYSINDEXES и т. д. Системный каталог «знает» обо всех таблицах, индексах, представлениях, хранимых процедурах, триггерах и т. д. Вы можете прочитать каталог и выпустить соответствующие инструкции SQL DROP.

+0

Спасибо за этот ответ. Я посмотрю, что я могу сделать с каталогом SYSTABLES. – YLombardi