AS400 SQL查询类似于本机AS400中的CLRLIB(清除库)

时间:2014-10-29 15:04:24

标签: sql ibm-midrange

我正在使用AS400数据库,我需要使用sql来操作库/集合。

我需要重新创建类似于CLRLIB命令的东西,但我找不到一个好方法。

有没有办法用sql查询从库中删除所有表?

也许我可以删除该集合并创建一个具有相同名称的新集合。但我不知道这是否是清理图书馆的好方法。

解决方案: 感谢Buck Calabro的解决方案。

我使用以下查询在SQL中调用CLRLIB:

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

如果LIB_NAME是我要清除的库的名称,则ASP_NAME是库所在的ASP的名称,而0000000032.00000是命令长度。

2 个答案:

答案 0 :(得分:2)

(请注意,术语COLLECTION已被弃用,SCHEMA是当前术语)

由于库可以包含SQL和非SQL对象,因此没有SQL方法可以删除每个可能的对象类型。

删除架构并重新创建它可能会有效。但请注意,如果库位于作业的库列表中,它将锁定它并且您将无法删除它。此外,除非库最初是通过CREATE SCHEMA(或CREATE COLLECTION)创建的,否则您最终会产生差异。

CRTLIB创建一个空库,CREATE SCHEMA创建一个库以及自动日记所需的对象和十几个SQL系统视图。

答案 1 :(得分:1)

阅读Charles'回答 - 您的架构中可能存在要保留的对象(数据区域,程序,显示和打印机文件等)如果问题是删除所有表以便您可以重新构建所有表,那么查看各种系统目录表:SYSTABLES,SYSVIEWS,SYSINDEXES等。系统目录'知道'关于所有SQL表,索引,视图,存储过程,触发器等。您可以阅读目录并发出相应的SQL DROP语句。