2014-10-29 53 views
3

我正在研究AS400数据库,我需要使用sql操作库/集合。AS400本机AS400中与CLRLIB(清除库)类似的SQL查询

我需要重新创建类似于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不够用? – 2014-10-29 17:49:41

+0

我使用BPM软件(Bonita BPM)工作,并与数据库进行交互,它使用带SQL查询的AS400连接器。 我不能在sql查询中使用命令CLRLIB。 – YLombardi 2014-10-30 09:20:46

+0

您可以调用QCMDEXC作为存储过程,并以此方式执行CL命令。 – 2014-10-30 11:40:12

回答

2

(注意术语COLLECTION已被弃用,模式是当前的术语)

由于库可以同时包含SQL和非SQL对象,没有SQL的方式来删除每一个可能的对象类型。

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

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

+0

感谢您的信息。 – YLombardi 2014-10-30 09:40:46

1

阅读Charles的答案 - 可能存在要保留的模式中的对象(数据区域,程序,显示和打印机文件等)如果问题是要删除所有表格,构建所有表,然后查看各种系统目录表:SYSTABLES,SYSVIEWS,SYSINDEXES等。系统目录“知道”所有SQL表,索引,视图,存储过程,触发器等。您可以阅读该目录并发出适当的SQL DROP语句。

+0

感谢您的回答。我会看看我能用SYSTABLES目录做什么。 – YLombardi 2014-10-30 09:23:57